在MSVC中,DebugBreak()或__debugbreak导致调试器中断.在x86上它相当于写"_asm int 3",在x64上它是不同的东西.在使用gcc(或任何其他标准编译器)进行编译时,我也想进入调试器.是否存在平台无关功能或内在功能?我看到了XCode的问题,但它似乎不够便携.
旁注:我主要想用它来实现ASSERT,我知道我可以使用assert(),但我也想在代码中编写DEBUG_BREAK或其他东西.
我有一个名为“debugger”的小型命令行应用程序,它充当进程 A 的调试器。现在该应用程序可以在 x86 和 x64 上正常工作。现在我必须将这个“调试器”迁移到ARM64架构。这个调试器非常简单地做的就是将断点(又名写入指令 int3(0xcc))附加到它在进程 A 的映射文件中找到的函数的开头。现在,每当我尝试通过这个“调试器”应用程序运行我的应用程序时,我都可以设置断点,但应用程序不断出现“access_violation”并严重崩溃。我的预感是,对于 ARM64 架构,我写入函数开头的指令“0xcc”会导致 access_violation。我尝试过使用指令“0x150”、“0xF000”而不是“0xcc”。欲了解更多信息,请参阅我之前的问题。
为了确保这是唯一的问题,我希望添加一条不会以任何方式影响代码执行的指令,以便我可以确认唯一的问题是我在调试器代码中作为断点编写的指令。请帮助我缩小问题范围,并提供所有答案的链接。