找出我的C程序挂起GDB的位置?

时间:2013-10-28 14:02:59

标签: c gdb

我正在尝试使用GDB调试我的C程序,以找出它挂起的位置。

作为GDB的新手,我可以运行它,但不知道如何让GDB停止并告诉我程序挂起的位置。

我尝试 CTRL + C 来终止它,但它只显示了我

Program received signal SIGINT, Interrupt.

当程序在GDB中挂起时,我该怎么办?

2 个答案:

答案 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 后,只需键入btbacktrace,它就会显示程序停止时的位置。< / p>