Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Tools

Introduction to Power Debugging


Automatic Break Points

The diagram from the previous section brings up an interesting point: the return address of a function call is in a known location at the time of the break point. You can display it or even set a break point on it automatically by using the command bp kernel32!CreateFileW "bp poi(esp);g".

Figure 2 demonstrates the debugging notepad and using a more complex break point. The break point on CreateFileW will display the file being opened and then automatically create a conditional break point on its return address and display "Handle Is Valid" if the handle returned is valid or "Handle Is Not Valid" if the handle returned is not valid. The output has been highlighted and you will notice that there was no interaction from the user.

[Click image to view at full size]

Figure 2: Debugger window using automatic break points.

The break point used is the following: bp Kernel32!CreateFileW "du poi(esp+4); bp poi(esp) \"j eax == ffffffff ? '.echo Handle Is Not Valid;g' ; '.echo Handle Is Valid;g'\";g". You may want to notice the syntax: for example, to insert the quotes for the automatic break point's command string, you need to specify a backwards slash. A single quote was also used to group multiple commands together with the conditional break point as opposed to a double quote.

The insertion of automatic break points could be quite useful in avoiding modifying and recompiling your code to place debug output after every function call. This example only displayed a string, however it could stop at a failure and even display the GetLastError value. You can even generate log files of the output using the .logopen command.

There are alternative methods of creating similar functionality for certain types of events. These include using the application verifier to break on system event errors such as file open and create failure. These, however, most likely would not cover libraries or internal APIs that you may want to track. This is also a simple alternative to using tools like application verifier.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.