首页 > 试题广场 >

简述一下 GDB 常见的调试命令

[问答题]
b某行打断点 r运行程序,断点停 c继续执行 p打印指定值 n单步运行 q终止调试
发表于 2022-10-18 08:26:36 回复(0)
启动gdb:gdb 可执行性文件 关闭gdb:quit/q 查看当前文件代码:l/list 行号或者函数名 查看非当前文件代码:l/list 文件名:行号或函数名 设置断点:b/break 查看断点:i/info b/break 删除断点:d/delete 断点编号 运行gdb:start(运行到第一行停) run(遇到断点停止) 继续运行:c(到下一个断点停) 向下执行一行代码(不会进入函数体):n/next
发表于 2023-06-12 20:11:44 回复(0)
补充: gdb attach pid:调试运行中的进城。 info thread:显示线程信息。 thread n:切换到指定线程。 bt:查看程序栈。
发表于 2023-02-24 23:19:47 回复(0)
r 运行 c 从中断的地方开始继续运行 bt 查看栈帧 print 打印变量 b 设置断点 info b 查看断点 n 单步,但不进入函数 s 单步,遇到函数会进入函数 d 删除断点 运行gdb命令时可以通过--args选项来传入参数,调试传入的参数,也就是说可以使用gdb --args gdb来调试gdb
发表于 2023-09-05 20:04:57 回复(0)
‘run’:执行程序; ‘break’:特定位置设置断点; ‘continue’:从当前位置执行,直到遇到下一个断点; ‘next’:执行下一行代码,但不进入函数内部; ‘step’:执行下一行代码,如果是函数则进入函数内部; ‘print’:打印变量值; ‘list’:显示当前代码的几行; ‘info’:提供关于程序状态的信息,如断点、线程、变量等; ‘quit’:退出GDB调试;
编辑于 2024-02-01 11:48:03 回复(0)
GDB(GNU Debugger)是一种强大的Unix下的源代码调试器,它可以帮助程序员定位和修复程序中的错误。以下是一些常见的GDB调试命令: list(l):显示当前查看的源代码。 info(i):显示关于当前调试会话的信息,例如程序的运行状态、寄存器内容等。 break(b):在指定的函数或行设置断点,程序运行到此断点会停止。 run(r):运行程序,如果程序遇到断点会停止。 next(n):执行下一行代码,如果遇到函数调用会直接跳过进入下一行。 step(s):执行下一行代码,如果遇到函数调用会进入函数体执行。 continue(c):继续执行程序直到遇到下一个断点。 print(p):打印变量的值。 finish:执行完当前函数的剩余代码并返回。 quit(q):退出GDB。 以上命令都是GDB调试中的常用命令,每个命令都有其特定的功能,可以根据需要进行使用。
编辑于 2024-01-23 19:38:06 回复(0)
breakpoint watch n q x
编辑于 今天 18:32:40 回复(0)
b打断点 i查看断点信息 r运行程序 c继续执行 p打印打断点内存值 n下一个断点,不进入函数内部 s下一个断点,进入函数内部 q退出
发表于 2024-03-27 07:43:03 回复(0)
run运行,continue继续运行,break [linenum]打断点,enable [breakpoint num]启用断点,list [] 显示代码,display [var], watch [var] 监控变量,每次都打印,gdb a.out -tui 显示源代码,break info 断点信息 。。。
编辑于 2024-03-21 11:21:32 回复(0)
启动:gdb 可执行程序 退出:quit/q 给程序设置参数/获取设置参数:set args 10 20 show args GDB 使用帮助:help 查看当前文件代码:list/l (从默认位置显示)list/l 行号 (从指定的行显示)list/l 函数名(从指定的函数显示) 查看非当前文件代码:list/l 文件名:行号 list/l 文件名:函数名 设置显示的行数:show list/listsize set list/listsize 行数 设置断点:b/break 行号 b/break 函数名 b/break 文件名:行号 b/break 文件名:函数 设置断点无效:dis/disable 断点编号 设置断点生效:ena/enable 断点编号 设置条件断点(一般用在循环的位置) b/break 10 if i==5 运行GDB程序:start(程序停在第一行) run(遇到断点才停) 继续运行,到下一个断点停:c/continue 向下执行一行代码(不会进入函数体):n/next 变量操作:p/print 变量名(打印变量值) ptype 变量名(打印变量类型 向下单步调试(遇到函数进入函数体):s/step finish(跳出函数体) 自动变量操作:display 变量名(自动打印指定变量的值) i/info display undisplay 编号 查看 follow-fork-mode mode 选项的值:show follow-fork-mode 查看 detach-on-fork 选项的值:show detach-on-fork
编辑于 2024-03-17 16:34:02 回复(0)
b* 、info + 寄存器、r 、q、n等等记不清了
编辑于 2024-03-12 18:43:19 回复(0)
进入调试 gdb 可执行程序 退出调试 quit 显示代码 list 设置断点 break 显示断点 info break 删除断点 delete break 运行 run continue next 运行一行进入函数体 step 运行一行不进入函数体
编辑于 2024-03-07 14:58:48 回复(0)
list查看行信息,或者函数名,或者其他文件代码,list,break infobreak step run continue disable break delete break
编辑于 2024-03-03 12:58:08 回复(0)
r 运行程序断点停,b打断点,c继续执行,p打印指定值,n单步运行,q终止调试
编辑于 2024-02-29 19:25:20 回复(0)
display 始终显示所要监控的变量 undisplay 取消常显示 disable/enable 使断点无效/生效 n 逐过程 s 逐语句 until+行号 直接跳到某一行 set var=某个值 强行改变某个值进行调试
编辑于 2023-12-09 14:25:02 回复(0)
使用l显示行号,r运行程序,n单条执行,b 设置断点,info查看断点信息,finish执行到当前函数返回,p打印变量值,delete breakpoint删除所有断点
发表于 2023-11-21 16:49:01 回复(0)
run, break, contine, next,step, list,info thread 显示线程信息,thread n 切换到指定线程,backtrace delete
发表于 2023-11-09 20:57:55 回复(0)
1. **启动程序:** `gdb <executable>`,用于启动GDB并加载要调试的可执行文件。 2. **设置断点:** - `break <function>`:在指定函数内设置断点。 - `break <line_number>`:在指定行号处设置断点。 - `break <file:line_number>`:在指定文件和行号处设置断点。 - `tbreak <function>`:设置临时断点,只在下次命中后自动删除。 3. **查看断点:** `info break`,查看当前已设置的断点列表。 4. **运行程序:** `run`,启动程序并运行到第一个断点或程序结束。 5. **单步执行:** - `next`:单步执行下一行代码,不进入函数。 - `step`:单步执行下一行代码,进入函数内部。 6. **继续执行:** `continue`,继续执行直到下一个断点或程序结束。 7. **查看变量值:** - `print <variable>`:查看变量的当前值。 - `display <expression>`:持续监视表达式的值。 8. **查看堆栈:** - `backtrace` 或 `bt`:查看当前堆栈跟踪。 - `frame <frame_number>`:切换到指定堆栈帧。 9. **查看源代码:** `list`,显示当前位置附近的源代码。 10. **设置条件断点:** - `break <location> if <condition>`:在满足条件时停下来。 - `watch <variable>`:在变量的值发生变化时停下来。 11. **跳转到指定位置:** `jump <line_number>`,跳转到指定行号继续执行。 12. **附加到正在运行的进程:** `attach <process_id>`,附加GDB到正在运行的进程,以进行动态调试。 13. **退出GDB:** `quit`,退出GDB。</process_id></line_number></variable></condition></location></frame_number></expression></variable></function></file:line_number></line_number></function></executable>
发表于 2023-11-07 15:34:53 回复(0)
b:打断点 r:运行 p: 打印 c:继续 bt:展示当前堆栈信息
发表于 2023-10-30 22:57:48 回复(0)
l(list):查看所载入的文件; b(break):设置断点; nfo b:查看设置的断点情况; r(run):运行第一行的代码,若运行指定行,可在r后面加上行号; p n:查看变量n的值; n(next):单步运行下一行的代码(遇到函数不会进入函数); s(step):单步运行下一行的代码(遇到函数会进入函数); c(continue):恢复程序的运行,执行剩余的程序。
发表于 2023-10-20 21:31:32 回复(0)