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

4 c gdb

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

作为一个新手GDB,我能够运行它,但不知道如何GDB停止并告诉我程序挂起的位置.

我试图CTRL+C终止它,但它只显示我

Program received signal SIGINT, Interrupt.
Run Code Online (Sandbox Code Playgroud)

程序挂起后我该怎么办GDB

Eli*_*gem 9

好吧,基本的gdb用法是:

  • -g旗子编译
  • 分两步运行:$ gdb yourProg然后,在GDB shell中:gdb) run [arguments]
  • 当程序挂起或终止时,请尝试gdb) where查看错误发生的位置.
  • 也用来list概述你想要的任何东西

关于gdb的更多内容
或参考这个方便的GDB命令备忘单.

要知道在哪里设置断点,只需编译-g并执行以下操作:

 $ gdb a.out        //assuming you didn't specify a -o
gdb) run [args]
Run Code Online (Sandbox Code Playgroud)

如果你(gdb)在运行开始后没有得到你的控制台东西,你的程序可能会包含一个死锁.通过按ctrl+ 修复此问题c,然后执行以下操作:

gdb) bt            //get a back-trace of where things whent wrong
//or
gdb) where
Run Code Online (Sandbox Code Playgroud)

要继续逐步调试,请使用s,例如(参考备忘单......我不打算在此列出所有命令)

这应该会让你知道在哪里寻找问题

  • q @ mavErick:你没有输入'gdb)`,如果你运行GDB,你会得到一种shell,而不是常规的bash shell,例如看起来像`(gdb)_`其中`_`是你的光标,你在那里输入`where`或`bt`命令等. (2认同)
  • @EliasVanOotegem麻烦,我想,如果程序挂起(例如无限循环)你没有得到gdb提示,你就无法运行gdb命令.即你必须先发出CTRL + C或类似的东西. (2认同)

Cro*_*man 5

CTRL-C在 gdb 中键入后,只需键入btbacktrace,它就会显示程序停止时的位置。