我正在尝试使用GDB
调试我的C程序,以找出它挂起的位置。
作为GDB
的新手,我可以运行它,但不知道如何让GDB
停止并告诉我程序挂起的位置。
我尝试 CTRL + C 来终止它,但它只显示了我
Program received signal SIGINT, Interrupt.
当程序在GDB
中挂起时,我该怎么办?
答案 0 :(得分:8)
嗯,基本的gdb用法是:
-g
标志$ gdb yourProg
然后在GDB shell中运行:gdb) run [arguments]
gdb) where
,以查看错误发生的位置。list
来概述您想要的内容 More on gdb here
或者参考GDB命令的this handy cheat-sheet。
要知道在哪里设置断点,只需使用-g
进行编译并执行此操作:
$ gdb a.out //assuming you didn't specify a -o
gdb) run [args]
如果在运行开始后没有得到(gdb)
console-thingy,那么您的程序可能会包含死锁。通过按 ctrl + c ,然后进行修复:
gdb) bt //get a back-trace of where things whent wrong
//or
gdb) where
要继续逐步调试,请使用s
,例如(请参阅备忘单......我不打算在此列出所有命令)
这应该让你知道在哪里寻找问题
答案 1 :(得分:2)
在gdb中键入 CTRL-C 后,只需键入bt
或backtrace
,它就会显示程序停止时的位置。< / p>