【发布时间】:2019-03-21 16:50:05
【问题描述】:
我正在做一个项目,我不能透露代码的细节。因此,该应用程序都是用 C 和 C++ 编写的。因为,想要调试的特定文件有很多依赖项和导出,我需要调试整个项目。如何在代码本身中设置断点,以便调试在该特定点停止?我正在使用 Ubuntu 14.04(因为该项目与此环境兼容)和 gdb 调试器。
我试过了
#include <csignal>
// Generate an interrupt
std::raise(SIGINT);
但我不断收到错误
error: ‘raise’ is not a member of ‘std’
即使这样也没有用
#include <signal.h>
raise(SIGINT);
加上调试不会在那个时候停止,所以我可以预见那个时候的功能。我只想从控制台调试它,而不是使用任何 IDE。
由于我要调试的程序文件有很多要导入的头文件,我无法制作一个可执行文件来使用 gdb。因此,虽然我的 MakeFile 的make clean build 我想在特定功能处调试特定程序文件。所以,为此我想在程序中添加断点。我不能使用任何 GUI 进行调试,因为我不应该使用。
【问题讨论】:
-
你的 Ubuntu 14 真的很旧,你应该升级它(当前的 Ubuntu 是 2018 年 10 月的 18.04)
-
@BasileStarynkevitch Ikr
-
请edit您的问题添加几段动机和背景。为什么需要在 C 代码中添加断点?为什么你不能使用一些脚本(可能来自你的
Makefile?)以非交互方式运行gdb?没有这些解释,您的问题就不清楚了。 -
您在调试器中设置断点,而不是在源代码中。
-
你的问题很不清楚,而且很混乱。在命令行上构建您的程序。在您的问题中显示编译命令和一些minimal reproducible example