gpt4 book ai didi

c++ - 嵌入 GDB 断点

转载 作者:行者123 更新时间:2023-11-30 00:36:23 27 4
gpt4 key购买 nike

我正在编写一个通过抛出异常从错误中恢复的应用程序。

然而,在调试时,我希望我的调试器在抛出异常之前在我的错误点停止。无论如何添加一些代码会导致GDB用某些代码中断执行。

我对 ARM 和 x86 架构都很感兴趣,一些跨平台的东西会很有用。

编辑:我正在寻找一些断点指令或包含断点指令的宏。

最佳答案

您可以在代码中添加“断点指令”。如果没有附加调试器,我所知道的大多数操作系统都会忽略断点。

编译器和处理器依赖于你为此使用什么指令,但在大多数编译器中有一个“内部”或“内置”函数,例如用于 MS 编译器的 DebugBreak();__builtin_trap(); 用于 gcc 和相关。

编辑:__builtin_trap(); 是个坏主意,因为它会阻止代码进一步运行。相反,使用内联汇编器:

inline void DebugBreak()
{
#if defined(X86)
__asm__ __volatile__("int 3");
#elif defined(ARM)
__asm__ __volatile__("bkpt");
#else
#error DebugBreak not defined for this architecture or no architecture defined.
#endif
}

应该适用于 x86 和 arm - 您可能希望为架构选择宏使用“更好”的名称 - 我对不同架构的工作不多,所以我没有记住官方名称的确切含义。

关于c++ - 嵌入 GDB 断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16057589/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com