编译语言的gdb调试命令

GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。

1、运行    

gdb :                  运行gdb调试程序
file <文件名>:         加载被调试的可执行程序文件。
run(简写r):         运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。

continue(简写c):    继续执行,到下一个断点处(或运行结束)

next(简写n):        单步跟踪程序,当遇到函数调用时,直接调用,不进入此函数体;

step(简写s):        单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的

【这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。】

si,ni :                si命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。

until:                运行程序直到退出循环体; / until+行号: 运行至某行 

finish:               运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。

call 函数(参数):      调用“函数”,并传递“参数”,如:call gdb_test(55)

quit:                 简记为 q ,退出gdb

2、设置断点

b:                     Breakpoint的简写,设置断点。可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。

delete                 断点号n:删除第n个断点

disable                断点号n:暂停第n个断点

enable                 断点号n:开启第n个断点

clear                  行号n:清除第n行的断点

info breakpoints      (简写info b) :显示当前程序的断点设置情况

3、查看源代码

list                  (简写l):列出程序的源代码,默认每次显示10行。

list行号:             将显示当前文件以“行号”为中心的前后10行代码,如:list 12

list 函数名:          将显示“函数名”所在函数的源代码,如:list main

list :                不带参数,将接着上一次 list 命令的,输出下边的内容。

4、打印表达式

p <变量名称>           Print的简写,显示指定变量(临时变量或全局变量)的值。
display 表达式:      在单步运行时将非常有用,使用display命令设置一个表达式后,它将在每次单步进行指令后,紧接着输出被设置的表达式及值。如:display a 
watch 表达式:        设置一个监视点,一旦被监视的“表达式”的值改变,gdb将强行终止正在被调试的程序。如: watch a

5、查询运行信息

where/bt :           当前运行的堆栈列表

set args 参数:        指定运行时的参数

show args:           查看设置好的参数

info program:        来查看程序的是否在运行,进程号,被暂停的原因

6、分割窗口

layout:             用于分割窗口,可以一边查看代码,一边测试:

layout src:         显示源代码窗口

layout asm:         显示反汇编窗口

layout regs:        显示源代码/反汇编和CPU寄存器窗口

layout split:       显示源代码和反汇编窗口

Ctrl + L:           刷新窗口

时间: 2024-08-12 13:55:32

编译语言的gdb调试命令的相关文章

自己常用GDB调试命令

1.进入gdb调试模式 $ gdb xxx(程序名) 设置函数参数:set args  xxx 查看函数参数:show args 2.break 行号 (打断点) 3.delete 行号 (取消断点) 4.next 单步运行 5.step 进入函数内部 6.finish 退出当前函数 7.print 变量名/*(指针)   :查看变量的运行中的值 9.continue 继续执行 9.退出调试模式 signal SIGINT /  强行退出 signal SIGKILL 10.2次Tab 可补全命

gdb调试命令的使用及总结

gdb调试命令的使用及总结 gdb是一个在UNIX环境下的命令行调试工具.如果需要使用gdb调试程序,请在gcc时加上-g选项.下面的命令部分是简化版,比如使用l代替list等等. 1.基本命令 命令 描述 backtrace(或bt) 查看各级函数调用及参数 finish 连续运行到当前函数返回为止,然后停下来等待命令 frame(或f) 帧编号 选择栈帧 info(或i) locals 查看当前栈帧局部变量的值 list(或l) 列出源代码,接着上次的位置往下列,每次列10行 list 行号

经典的GDB调试命令,包括查看变量,查看内存

经典的GDB调试命令,包括查看变量,查看内存 在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据.print命令的格式是: print print / 是表达式,是你所调试的程序的语言的表达式(GDB可以调试多种编程语言),是输出的格式,比如,如果要把表达式按16进制的格式输出,那么就是/x. 一.表达式 print和许多GDB的命令一样,可以接受一个表达式,GDB会根据当前的程序运行的数据来计算这个表达式,既然是表达式,

gdb调试命令

本篇摘自互联网,纯属自己学习笔记,然分享给看到我的博客的人们. 用GDB调试程序 GDB是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本.UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能. 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更为强劲的功能.而Windows下的图形软件基本上是各自为营,

GDB调试命令小结

1.启动调试 前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息.gdb program //最常用的用gdb启动程序,开始调试的方式gdb program core //用gdb查看core dump文件,跟踪程序core的原因gdb program pid //用gdb调试已经开始运行的程序,指定pid即可gdb attach pid //用gdb调试已经开始运行的程序,指定pid即可 2.调试命令(1)执行命令模式-bat

比较全面的gdb调试命令

用GDB调试程序 GDB是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本.UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能. 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更为强劲的功能.而Windows下的图形软件基本上是各自为营,互相不能调用,很不利于各种软件的相互集成.在这里并不是要和Win

GDB调试命令总结

GDB的功能 1.启动被调试程序 2.让被调试的程序在指定位置停住 3.当程序停住的时候,可以检查程序状态,变量值 用法: gcc -g test.c -o test gdb 命令: 查看源代码 list/l 空 or 行号 or 函数名 直接enter,重复执行上一命令 run/r  运行至下一个断点停下来 or 如果没有断点,直接运行结束 start   运行进入主函数(main())停下来 .断点 1)     设置断点 break/b----行号 or 函数名 [if condition

深度学习的GDB调试命令和经验记录

调试的指令很简单: cd $CAFFE_ROOT, 1. gdb ./build/tools/caffe 2. 设置运行参数 set args train --solver=xxxxsolver.prototxt 3. 设置断点, 比如b solver.cpp:59 , 此时会出现"Make breakpoint pending on future shared library load? (y or [n]) ", 选择y即可,因为断点设置在.so文件中 4. run 即可

gdb调试常用实用命令和core dump文件的生成(转)

1.生成core dump文件的方法: $  ulimit -c //查看是否为0 如果为0 $   ulimit -c unlimited 这样在程序崩溃以后会在当前目录生成一个core.xxxx的文件 2.调试core dump文件 生成了core.xxx文件以后 $  gdb ./应用程序  core.xxxx 就会恢复现场到你的程序崩溃的那一刻 (gdb)bt          //这个命令会列出程序崩溃时的堆栈信息,一层一层会有标号  #0  #1  #2 ....... 如果你要查看