当前位置:   article > 正文

gdb调试正在运行的进程_gdb调试进程

gdb调试进程

gdb [exec_file] [core_file]

#or
gdb -c [core_file] [exec_file]   #-c指定转储的core文件

#进入后输入bt查看调用栈

bt     #显示所有帧栈

bt 10  #显示前面10个帧栈(感觉没啥用)

bt -10 #显示后面10个帧栈(感觉没啥用)

bt full  #显示帧栈以及局部变量

首先 ps -aux| grep test  查看进程ID

方式一
通过–-pid参数来绑定指定的进程程序。

~@hqlong gdb --pid 25552

方式二
通过程序和进程号来绑定。

~@hqlong gdb test 25552

方式三
先启动gdb后,通过attach来绑定pid

~@hqlong gdb attach 25552

将pid和gdb绑定后,就可以来对每一段代码进行调试。

常用命令:

  1. 调试命令 (缩写) 作用
  2. (gdb) break (b) 在源代码指定的某一行设置断点,其中xxx用于指定具体打断点位置
  3. (gdb) run (r) 执行被调试的程序,其会自动在第一个断点处暂停执行。
  4. (gdb) continue (c) 当程序在某一断点处停止后,用该指令可以继续执行,直至遇到断点或者程序结束。
  5. (gdb) next (n) 令程序一行代码一行代码的执行。
  6. (gdb) step(s) 如果有调用函数,进入调用的函数内部;否则,和 next 命令的功能一样。
  7. (gdb) until (u)
  8. (gdb) until (u) location 当你厌倦了在一个循环体内单步跟踪时,单纯使用 until 命令,可以运行程序直到退出循环体。
  9. until n 命令中,n 为某一行代码的行号,该命令会使程序运行至第 n 行代码处停止。
  10. (gdb) print (p) 打印指定变量的值,其中 xxx 指的就是某一变量名。
  11. (gdb) list (l) 显示源程序代码的内容,包括各行代码所在的行号。
  12. (gdb) finish(fi) 结束当前正在执行的函数,并在跳出函数后暂停程序的执行。
  13. (gdb) returnreturn) 结束当前调用函数并返回指定值,到上一层函数调用处停止程序执行。
  14. (gdb) jump(j) 使程序从当前要执行的代码处,直接跳转到指定位置处继续执行后续的代码。
  15. (gdb) quit (q) 终止调试。
  16. (gdb) Backtrace(bt) 查看堆栈。
  17. (gdb) info threads 显示当前可调试的所有线程
  18. (gdb) thread ID 切换当前调试的线程为指定ID的线程
  19. (gdb) attach process-id 在gdb状态下,开始调试一个正在运行的进程
  20. (gdb) thread apply all command 所有线程执行command
  21. ————————————————
  22. 版权声明:本文为CSDN博主「GS_Qiang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
  23. 原文链接:https://blog.csdn.net/weixin_45937795/article/details/126364422

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/287985
推荐阅读
相关标签
  

闽ICP备14008679号