关闭

gdb调试(c++)

标签: 调试
18人阅读 评论(0) 收藏 举报
分类:

run(r)

运行
start 开始执行程序,停在main函数第一行语句前面等待命令
查看代码  
list(l) 列出附近代码
断点  
break sum 在函数sum入口设置断点
break 1  在第一行设置断点
break *0x80 在地址0x80处设置断点
delete 1 删除断点1
break info 查看断点信息
执行  
next(或n) 执行下一行语句
step(或s) 执行下一行语句,如果有函数调用则进入到函数中
finish 连续运行到当前函数返回为止,然后停下来等待命令
continue 继续执行,相对break
检查代码 和 数据  
print result 查看result变量值
set resule = 0 设置变量的值
   
backtrace(bt) 查看各级函数调用及参数
frame(f) eg: f 1 选择栈帧
info locals 查看当前帧的局部变量值
info frame 有关当前栈帧的信息
info regisiters 所有寄存器的值
退出  
quit 退出gdb调试
   
   
   
 



g++ -g main.cpp -o main 

gdb main

set args (1 2)

例子参考:http://www.cnblogs.com/hankers/archive/2012/12/07/2806836.html

命令参考:http://www.jb51.net/article/36393.htm

在某些时候,很有可能你的变量和GDB中的参数冲突,如:
    
        (gdb) whatis width
        type = double
        (gdb) p width
        $4 = 13
        (gdb) set width=47
        Invalid syntax in expression.

    因为,set width是GDB的命令,所以,出现了“Invalid syntax in expression”的设置错误,此时,你可以使用set var命令来告诉GDB,width不是你GDB的参数,而是程序的变量名,如:
    
        (gdb) set var width=47
        
    另外,还可能有些情况,GDB并不报告这种错误,所以保险起见,在你改变程序变量取值时,最好都使用set var格式的GDB命令。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:34次
    • 积分:2
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行
    评论排行