在c ++中没有断点的中断进程
Posted
技术标签:
【中文标题】在c ++中没有断点的中断进程【英文标题】:Break process without breakpoint in c++ 【发布时间】:2011-03-17 07:56:49 【问题描述】:在 Visual Studio 2008 MFC 应用程序中,当我按下按钮时,有没有办法在没有断点的情况下停止调试?问题是,这是一个相当大的共享项目,所以我的代码被另一个“模块”调用,但我不知道我的哪些函数被调用,所以我不知道在哪里放置断点。如果我的任何函数被调用,我的目标是中断该过程。
【问题讨论】:
【参考方案1】:您可以使用DebugBreak() 函数。
【讨论】:
【参考方案2】:您可以编写一个 Visual Studio 宏,在源代码的每一行放置一个断点。你可以让它更聪明一点,只在每个函数开始时设置断点,但这需要一些解析。将该宏绑定到一个键。运行 MFC 应用程序,当您想开始中断您自己的代码时,切换到 Visual Studio,按一下键和 presto,您将在第一次使用代码时中断。
另一个选项是创建一个 C++ 宏来检查是否设置了全局布尔值并在设置时执行 asm int 3 。在代码的每个(高级)函数的开头使用此宏。添加在 MFC 应用程序中按下某个按钮时设置全局布尔值的代码。这仅适用于 32 位可执行文件,您需要 64 位可执行文件中的一些内在函数,我不知道。
希望这会有所帮助。
干杯,
塞巴斯蒂安
【讨论】:
【参考方案3】:有一个“暂停”按钮可以中断执行...或者您可以在所有可能的嫌疑人上设置一个断点。你不知道你的哪个函数被调用了——把它们都打断。然后你就会实现你的目标。
如果我的任何函数被调用,我的目标是中断进程。
【讨论】:
如果我按下暂停,它说当前位置没有可用的源代码,因为我没有其他模块的源代码。手动在所有函数(超过 1000 个)中设置断点会很痛苦。 使用调试条件。在您的每个函数中编译一些代码,这些代码将调用一些单段代码,或者将一个宏放在那里,或者您可以在其中编译以进行调试并编译出来以供发布。你这样做一次,是的 - 这是一种痛苦。但是一旦你完成了 - 你可以在每次需要时轻松地调试你的代码。以上是关于在c ++中没有断点的中断进程的主要内容,如果未能解决你的问题,请参考以下文章