开发者

In Gdb how to set conditional breakpoint to a function's 3rd line

How can I set a conditional breakpoint to a function's 3rd line in GDB?

I know I could give the file name + line number but this is not working for me.

I have to store the gdb commands as a script to repeat it later and I don't want to change the script every time the source file is changing.开发者_JAVA技巧


How about defining your own command file for gdb and then just sourcing it during debug? That would help reduce a fair bit of typing. Try this:

Create a file, let's call it mydef and here's its contents:

define cmd
  b function-where-you-want-to-break
  r
  b +2
  c
end

Once you load the executable in gdb, type in source mydef in gdb prompt followed by cmd

Now you are into the 2nd line from where function began. :) Hope this helps!


Conditional Breakpoints


Type in the following,
assuming You have to apply a breakpoint at the line inside the function

(gdb) break <function-name>

GDB will reply with as follows Breakpoint 1 at 0xaddr: filename , linenumber.

Note the number of the breakpoint
( in this case it is 1 )

Enter the following command
( replace the breakpoint-number appropriately )

(gdb) condition 1 <condition>

During run-time you can skip (step-over) to the 3rd line using the next command twice

(gdb) next
(gdb) next

..and you are at the function’s 3rd line!!

UPDATE:

Additionally, to break when the variable changes value use this:

(gdb) watch variable==value

For more details please refer :
- GDB:Conditional Breakpoints
- Hacking into an executable using GDB

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜