几年前,我在 Borland C++ Builder 中使用了一些#define
。根据内存,它大约像
#define BREAK_IF_DEBUGGING asm(0xA3);
或类似的东西。它依赖于 0XA3(或任何它是什么)作为 Borland 用来触发断点的中断的操作码。
我可以在 Eclipse 中做同样的事情吗? (我可能会将其包装在一些 #idef ECLIPSE
和 #ifdef TESTING
中)
我希望在这里实现的是
- 当然,代码在发布版本中编译为零。
- 如果我使用 Ctrl-F11 通过单元测试运行,那么我不想触发断点(它不会因为 Ctrl-F11 是“运行”)
- 如果我使用 F11“使用调试运行”),那么如果执行遇到宏的任何使用,它将在断点处停止。
为什么?因为我想设置并忘记。只需将其中一个放在每个错误分支中(或将其嵌入我的 LOG_ERROR
宏中)。
通常当我选择我的初始断点时,为时已晚,所以这个宏说“我想我想运行到 X 行,但如果执行首先通过这些错误分支之一,我想停在那里并四处嗅闻”。
不管你是否喜欢这个想法,你能告诉我怎么做吗?
最佳答案
关于
#define BREAK_IF_DEBUGGING asm("int3");
(int 和 3 之间缺少空格是有意为之:int 3 的编码与其他中断不同,gnu 汇编器使用这种特殊语法标记这种差异)
关于c++ - Eclipse 中的 C/C++,我可以使用 #define 来设置断点,但只能在单步执行代码时使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2309465/