c++ - Eclipse 中的 C/C++,我可以使用 #define 来设置断点,但只能在单步执行代码时使用吗?

标签 c++ c eclipse debugging breakpoints

几年前,我在 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/

相关文章:

java - 在 Android 应用程序中存储文本数据的最佳方式?

c++ - 带有用户定义数组的 for 循环 - C++

c# - 将 IntPtr 转换为 C# 结构指针

c - 连接字符串后的 Malloc() 内存损坏错误

c - 引用指向另一个结构内部结构内部结构的指针

eclipse - 在 Eclipse 中显示 Maven War Overlay 文件

c++ - 为什么在复制赋值之前调用复制构造函数?

c++ - 有条件地选择要继承的类

c - GNU make 和对象列表

android - 如何在没有 Gradle 的情况下在 Eclipse 中的 Android 项目上启用 multidex