gdb带参数调试

来源:互联网 发布:淘宝上的乖乖水有用吗 编辑:程序博客网 时间:2024/06/10 02:08

从网上找到的资料,整理一下。

实验

gdb带源码调试, 给被调试程序带上参数.
给gdb带上-tui参数,有dos调试器的感觉,很喜欢:)

gdb -tui --args ./myprog para1 para2 para3(gdb) break main(gdb) run(gdb) display argc3: argc = 4(gdb) display argv[0]1: argv[0] = 0x7fffffffedb1 "/home/lostspeed/test/src/myprog"(gdb) display argv[1]2: argv[1] = 0x7fffffffedd4 "para1"(gdb) display argv[2]4: argv[2] = 0x7fffffffedd7 "para2"(gdb) display argv[3]5: argv[3] = 0x7fffffffedda "para3"

当在gdb中被调试程序结束后,或调试到中间,想从头开始完,可以在gdb中直接从头开始带参数调试。

(gdb) run /home/lostspeed/test/src/myprog param1 param2 param3

设置断点

break 文件名:行号

break x.cpp:56

break 函数名

break main

当断点命中后,如果要继续跑到下一个断点,执行continue命令.

删除断点

clear 文件名:行号

clear x.cpp:298

重复上一次的命令执行

在单步时,经常需要输入n + 回车.
gdb如果没有输入命令回车时,执行的是上一次的命令。
这样在单步时,就方便了。只需要输入一次n +回车,如果不需要跟进函数(s), 就一直按回车就可以单步程序流程了.

跳出函数

如果不小心按s键步入了一个不关心的函数,可以输入finish+回车,返回上一级函数。

查看内存值

按照16进制打印缓冲区
x/[要打印的字节数量][显示格式(单字节,双字节,4字节,8字节)] 内存地址或变量名称

x/16ba p_my_data

ref

GDB 进行调试 使用心得
http://www.cnblogs.com/shipfi/archive/2008/08/04/1260293.html