【发布时间】:2020-05-30 10:59:52
【问题描述】:
我正在尝试调试在 Ubuntu 18.04 上运行的 gdb 中的应用程序。
在代码的某些部分,我可以设置断点并成功调试问题。
但在其他部分,触发断点会导致进程退出。
有什么方法可以让首次亮相的语句出现在 gdb 控制台中?
我目前使用 gdb 附加到进程,然后从该点进行调试。
【问题讨论】:
-
请定义“调试语句”的含义。如果您使用 GDB 从控制台运行程序,所有标准输出和标准错误消息都将打印在那里。但是,如果您从 GUI 应用程序启动器运行程序,然后附加到它,输出和错误仍将转到 GUI 的标准输出,一些日志文件,如
~/.xsession-errors或您可以使用journalctl -ef观看的 systemd 日志/跨度> -
或者如果调试语句是 syslog 调用,输出将在系统日志中。
/var/log/messages或/var/log/syslog或其他文件,具体取决于您的设置。或者,在 systemd 日志中。 -
我有代码 (std::cout) 将语句发送到标准输出,但它们没有显示在 gdb 控制台中。但是我知道这些函数正在执行,因为当我在那里设置断点时,它会中断(但正如我在原始帖子中提到的那样,进程会终止)。
标签: c++ gdb ubuntu-18.04