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