gdb常用命令abc

70 篇文章 1 订阅

转自:http://blog.csdn.net/wuzh1230/article/details/7188822


gdb常用命令


本机调试

带参数启动

gdb --args ./program arg1 arg2 arg3


在main()处断点

break main


启动以后设置参数运行

run arg1 arg2 arg3


取消参数开始运行

set args

run 


设置参数

set args arg1 arg2 arg3

run


分析core文件

gdb ./test ./test.core

gdb --core=./test.core ./test

gdb ./test 2640

gdb --pid=2640 ./test



远程调试

目标机器

gdbserver 127.0.0.1:1234 ./test

主机:

target remote 127.0.0.1:1234

break main

run 


调试控制命令:

step 单步,参数N表示单步几次,一般可以用作步入到 子函数 调用中去。(vc++的F11,windbg的t)

stepi 指令集的step,一般在汇编窗口调用。


next 类似单步,只不过把子函数调用当做一个指令预先执行掉,不跟进去。(vc++的F10, windbg的p)

nexti 指令集的next,一般在汇编窗口调用。


until 执行到比当前行号大的一行为止。用作步出循环体,这个时候刚好在循环体的最后一行,可以执行这个步出循环。


finish 执行到当前栈即将返回的位置。用于将当前函数执行完毕返回。(vc++的shift+F11,windbg的pt,tt,wt)


advance 推进到某个位置 advance 27表示推进到27行,(vc++的ctrl+F11, windbg的pa, "step to address")


jump 跳到某个指令直接执行, jump 27 直接跳到27行开始执行,最好在27行之后某个位置断点一个看看。(windgb的r eip=0x41000100)



断点指令:

break main 函数名断点

break test.c : 27 文件的27行断点

break *0x00000000004005f0 在汇编指令的地址处断点, 前面有一个星号

硬件数据断点

awatch 访问断点 access watch; awatch i, 当i被访问的时候,程序断开。(类似于windbg的ba断点)

watch   写入数据断点, watch i 当i的值被修改的时候,断开。

rwatch 读取断点, 当i的值被读取的时候断开。

hbreak 硬件指令断点, hbreak *0x0000000000400606 在这个地址设置硬件断点


条件断点:

在循环体的11行断点,只有循环计数器是50的时候断开。

  1. (gdb) break 11 if i=20  
  2. Breakpoint 2 at 0x4005c9: file test.cxx, line 11.  
  3. (gdb) info breaks  
  4. Undefined info command: "breaks".  Try "help info".  
  5. (gdb) info break  
  6. Num     Type           Disp Enb Address            What  
  7. 1       breakpoint     keep y   0x00000000004005c0 in foo() at test.cxx:9  
  8.         breakpoint already hit 1 time  
  9. 2       breakpoint     keep y   0x00000000004005c9 in foo() at test.cxx:11  
  10.         stop only if i=20  
  11. (gdb) c  
  12. Continuing.  
  13. 0  
  14.   
  15. Breakpoint 2, foo () at test.cxx:11  
  16. 11             printf("%d\n",i);  
  17. (gdb) p i  
  18. $1 = 20 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值