首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C/C++在Eclipse中,我可以使用#define来设置断点,但只能在遍历代码时使用?

C/C++在Eclipse中,我可以使用#define来设置断点,但只能在遍历代码时使用?
EN

Stack Overflow用户
提问于 2010-02-22 07:40:08
回答 4查看 385关注 0票数 1

几年前,我在Borland C++ Builder中使用了一个小小的C++。从记忆中看,大概就像

代码语言:javascript
复制
 #define BREAK_IF_DEBUGGING asm(0xA3);

或者类似的东西。它依赖于0XA3 (或其他什么)作为中断的op代码,Borland用来触发断点。

我可以在Eclipse中做同样的事情吗?(我可能会把它包装在几个#idef ECLIPSE#ifdef TESTING中)

我希望在这里实现的是

当然,在发布版本中,代码会编译为零。如果我使用Ctrl-F11运行单元测试,那么我不希望触发一个断点(因为Ctrl-F11是“运行”),如果我使用

  • “使用F11运行Debug”,那么如果执行击中宏的任何使用,则在断点停止。

为什么?因为我想设置和忘记。只需将其中一个放入每个错误段(或将其嵌入到我的LOG_ERROR宏中)即可。

通常,当我选择初始断点时,为时已晚,因此这个宏表示“我想要运行到X行,但是如果执行首先通过这些错误分支之一,我想在那里停止&四处嗅”。

不管你喜不喜欢这个主意,你能告诉我怎么做吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-22 07:56:40

关于

代码语言:javascript
复制
#define BREAK_IF_DEBUGGING asm("int3");

( int和3之间缺少空间是有意的: int 3的编码方式不同于其他中断,gnu汇编程序用这种特殊的语法标记这种差异)

票数 3
EN

Stack Overflow用户

发布于 2010-02-22 07:49:55

您可以使用Windows函数IsDebuggerPresent (请参阅http://msdn.microsoft.com/en-us/library/ms680345%28VS.85%29.aspx)检查调试器是否附加到您的进程。

如果附加了调试器,则可以使用breakpoint函数触发断点。

票数 1
EN

Stack Overflow用户

发布于 2010-02-22 07:55:33

如果您使用的是unix操作系统,则可以执行以下操作:

代码语言:javascript
复制
raise(SIGTRAP); 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2309465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档