我通常使用这样的调试器,所以幸运的是,直到现在cgdb
我才需要诉诸调试调用。system
我有一个二进制文件,大约需要 30 分钟才能加载gdb
,此后调试器经常崩溃,可能是由于符号数量非常多。这使得我的正常工作流程(加载gdb
、添加断点、识别问题变量等)站不住脚。
在 Windows 中,我此时会开始在我的代码中添加大量cout
and system("pause")
(穷人的断点)语句;但我该如何在类 Unix 环境中做到这一点呢?
答案1
您可能想阅读以cin
获取穷人的信息pause
- 它会等待您输入Enter,而不是在您喝咖啡时继续(正如sleep()
将会的那样)。
答案2
我有时会诉诸这个
#define BRK() do { printf("%s %d\n", __FILE__, __LINE__); getchar(); } while (0)
...
BRK(); // Stop and wait for enter
另外,函数检测可能会有所帮助:GCC 允许挂钩每个函数的进入/退出,请参阅https://stackoverflow.com/questions/2281739/automatically-adding-enter-exit-function-logs-to-a-project
答案3
cout
/也是如此cerr
,您可以使用sleep()
- 查看man 3 sleep
或man 3 usleep
来获取更多信息。