【问题标题】:Break process without breakpoint in c++在c ++中没有断点的中断进程
【发布时间】:2011-03-17 07:56:49
【问题描述】:

在 Visual Studio 2008 MFC 应用程序中,当我按下按钮时,有没有办法在没有断点的情况下停止调试?问题是,这是一个相当大的共享项目,所以我的代码被另一个“模块”调用,但我不知道我的哪些函数被调用,所以我不知道在哪里放置断点。如果我的任何函数被调用,我的目标是中断该过程。

【问题讨论】:

    标签: visual-studio-2008 debugging visual-c++ mfc


    【解决方案1】:

    您可以使用DebugBreak() 函数。

    【讨论】:

      【解决方案2】:

      您可以编写一个 Visual Studio 宏,在源代码的每一行放置一个断点。你可以让它更聪明一点,只在每个函数开始时设置断点,但这需要一些解析。将该宏绑定到一个键。运行 MFC 应用程序,当您想开始中断您自己的代码时,切换到 Visual Studio,按一下键和 presto,您将在第一次使用代码时中断。

      另一个选项是创建一个 C++ 宏来检查是否设置了全局布尔值并在设置时执行 asm { int 3 }。在代码的每个(高级)函数的开头使用此宏。添加在 MFC 应用程序中按下某个按钮时设置全局布尔值的代码。这仅适用于 32 位可执行文件,您需要 64 位可执行文件中的一些内在函数,我不知道。

      希望这会有所帮助。

      干杯,

      塞巴斯蒂安

      【讨论】:

        【解决方案3】:

        有一个“暂停”按钮可以中断执行...或者您可以在所有可能的嫌疑人上设置一个断点。你不知道你的哪个函数被调用了——把它们都打断。然后你就会实现你的目标。

        如果我的任何函数被调用,我的目标是中断进程。

        【讨论】:

        • 如果我按下暂停,它说当前位置没有可用的源代码,因为我没有其他模块的源代码。手动在所有函数(超过 1000 个)中设置断点会很痛苦。
        • 使用调试条件。在您的每个函数中编译一些代码,这些代码将调用一些单段代码,或者将一个宏放在那里,或者您可以在其中编译以进行调试并编译出来以供发布。你这样做一次,是的 - 这是一种痛苦。但是一旦你完成了 - 你可以在每次需要时轻松地调试你的代码。
        猜你喜欢
        • 2019-06-19
        • 1970-01-01
        • 2011-11-19
        • 2015-03-10
        • 1970-01-01
        • 1970-01-01
        • 2011-07-25
        • 1970-01-01
        • 2013-10-26
        相关资源
        最近更新 更多