【问题标题】:Visual Studio 2008 viewing dialog after breakpoint hit断点命中后的 Visual Studio 2008 查看对话框
【发布时间】:2010-10-01 21:07:16
【问题描述】:
我正在构建一个 C++ MFC 应用程序,它一次创建一个模式对话框,同时隐藏父对话框。我希望在 Visual Studio 中调试时遇到断点时查看新创建的模式对话框。
但是,只要遇到断点,对话框的内容就不再呈现。盒子只是变白,或者保留在它上面施加的任何图像。程序恢复时对话框正常显示,但我需要能够在断点被命中时查看对话框,而程序被 Visual Studio 调试器“暂停”。
【问题讨论】:
标签:
c++
visual-studio
mfc
modal-dialog
breakpoints
【解决方案1】:
您不能这样做:重新绘制对话框的内容需要程序正在运行。如果它在断点处停止,则它没有运行。
这可能是因为您已经让 Visual Studio 和您的程序共享屏幕空间,因此 Visual Studio 出现在您的程序上方。当您将程序置于最前面时,它需要重新绘制(但不能因为它处于断点处)。
首先想到的是获得另一个监视器,并确保 Visual Studio 和您的程序在不同的监视器上运行——这样,您的程序就不需要重新绘制自己,您应该会看到之前在对话框中的内容。
或者,获取两台计算机并从一台计算机远程调试到另一台计算机——同样,您的程序不需要重新绘制自身,因此您应该仍然可以看到之前的内容。
【解决方案2】:
您还可以做一件事,暂时将dialog.Invalidate(); dialog.SendMessage(WM_PAINT); 放在断点之后,确保 Visual Studio 和对话框没有重叠,然后跳过绘制消息。如果对话框是空白的,它应该填满。
设置远程调试有很多陷阱,但一旦掌握了窍门,它就会变得非常宝贵。它肯定会照顾您当前的情况,一旦您准备好环境,您将更快地解决未来的错误。很多时候我遇到一个问题说,“如果我只有一个好的远程调试环境,我会做 A,但我会先尝试劣质的解决方案 B......”