gdb常用调试命令以及多线程堆栈的查看

gdb常⽤调试命令以及多线程堆栈查看
GDB是GNU开源组织发布的⼀个强⼤的UNIX下的程序调试⼯具。或许,各位⽐较喜欢那种图形界⾯⽅式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试⼯具有⽐VC、BCB的图形化调试器更强⼤的功能。所谓“⼨有所长,尺有所短”就是这个道理。
⼀般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,⾸先在编译时,我们必须要把调试信息加到可执⾏⽂件中。使⽤编译器(cc/gcc/g++)的 -g 参数可以做到这⼀点。如:
> cc -g hello.c -o hello
> g++ -g hello.cpp -o hello
gdb +程序名运⾏(gdb main)
使⽤ "--tui" 参数,可以在终端窗⼝上部显⽰⼀个源代码查看窗。
gdb --tui main
list(l) 查看最近10⾏源码
list fun 查看fun函数源码
list file:fun 查看file⽂件中的fun函数源码
list num1 num2 查看num1~num2⾏的源码
break ⾏号
break fun 在函数处设置断点
break file:⾏号
break file:fun
远程医疗系统
break if <condition> 条件成⽴时程序停住
info break (i b)查看断点
安里屋watch expr 当expr的值发⽣改变时,程序停住
图形用户界面delete  n  删除断点
探术
run/r 启动程序
continue(c) 运⾏⾄下⼀个断点
step(s) 单步跟踪,进⼊函数
next(n) 单步跟踪,不进⼊函数
金融交易系统finish 运⾏程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数信息
until 运⾏程序直到程序退出循环体
print i (p i) 查看变量的值
ptype 查看变量类型
print array 查看数组
print *array@len 查看动态内存
print x=5 改变运⾏时的数据武经七书直解
print &array 查看数组的地址
回车代表上⼀个命令
core⽂件
在程序崩溃时,⼀般会⽣成⼀个⽂件叫core⽂件。core⽂件记录的是程序崩溃时的内存映像,并加⼊调试信息。core⽂件⽣成的过程叫做core dump
设置⽣成core⽂件
ulimit -c 查看core-dump状态
ulimit -c 数字
ulimit -c unlimited
gdb利⽤core⽂件调试
gdb ⽂件名 core⽂件
Backtrace(bt)  查看堆栈
多线程调试
info threads 显⽰当前可调试的所有线程
thread ID 切换当前调试的线程为指定ID的线程
attach process-id 在gdb状态下,开始调试⼀个正在运⾏的进程
thread apply all command 所有线程执⾏command
下⾯给⼤家⼀个好玩的多线程程序,答案就在某个线程的堆栈中,先不要看下⾯的答案,⾃⼰试着⽤gdb玩⼀下哈(Linux 64bit)。
答案在下⾯图中,先不要看。。
The answer is orangutan.

本文发布于:2024-09-22 04:17:44,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/371150.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   查看   调试   函数   堆栈   线程   崩溃
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议