5

我正在尝试调试我的 C 程序GDB以找出它挂在哪里。

作为新手GDB,我可以运行它,但不知道如何GDB停止并告诉我程序挂在哪里。

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

Program received signal SIGINT, Interrupt.

程序挂在那里怎么办GDB

4

2 回答 2

11

好吧,基本的 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]

如果在运行开始后你没有恢复你的(gdb)控制台,你的程序很可能包含死锁。按ctrl+修复此问题c然后继续:

gdb) bt            //get a back-trace of where things whent wrong
//or
gdb) where

要继续逐步调试,只需使用s, 例如(请参阅备忘单……我不会在这里列出所有命令)

这应该让您对在哪里寻找问题有所了解

于 2013-10-28T14:09:50.113 回答
5

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

于 2013-10-28T14:17:58.073 回答