2011-03-17 62 views
0

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

回答

2

您可以编写一个Visual Studio宏,在源代码的每一行放置一个断点。你可以让它变得更智能一些,只在每个函数启动时加入断点,但这需要一些解析。将该宏绑定到一个键。运行MFC应用程序,当您想要开始打破自己的代码时,切换到Visual Studio,按下按键并继续,您将首次使用代码。

另一种选择是制作一个C++宏,用于检查是否已设置全局布尔值,并在其执行时执行asm {int 3}。在代码的每个(高级)函数的开始处使用此宏。添加在MFC应用程序中按下某个按钮时设置全局布尔值的代码。这只能在32位可执行文件中运行,您需要在64位可执行文件中使用一些内部函数,这是我不知道的。

希望这会有所帮助。

干杯,

Sebastiaan

+0

这个宏观事物指引我走向正确的方向。谢谢! – Biroka 2011-03-17 12:00:50

1

有一个“暂停”按钮可以中断执行......或者你可以在所有可能的嫌犯身上放置一个断点。你不知道你的哪个函数被调用 - 在所有函数中放一个。然后,你会实现你的目标。

我的目标是打破这个过程,如果我的任何函数被调用。

+0

如果我按暂停,它表示当前位置没有可用的源代码,因为我没有其他模块的源代码。在所有的功能(超过1000)手动放置一个断点,这将是一个痛苦的***。 – Biroka 2011-03-17 08:04:51

+0

使用调试条件。在你的每个函数中编译一些代码,这些代码会调用一段代码,或者在那里放置一个宏或者一些你可以编译进去进行调试和编译以供发布的东西。你做了一次,是的 - 这是一个痛苦。但是一旦你做完了 - 你可以在你需要的时候轻松地调试你的代码。 – littleadv 2011-03-17 08:10:20