Unix 中的系统(“暂停”)?

Unix 中的系统(“暂停”)?

我通常使用这样的调试器,所以幸运的是,直到现在cgdb我才需要诉诸调试调用。system

我有一个二进制文件,大约需要 30 分钟才能加载gdb,此后调试器经常崩溃,可能是由于符号数量非常多。这使得我的正常工作流程(加载gdb、添加断点、识别问题变量等)站不住脚。

在 Windows 中,我此时会开始在我的代码中添加大量coutand 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 sleepman 3 usleep来获取更多信息。

相关内容