分类 调试 下的文章

“编辑并继续”处理大多数类型的代码更改。 但是,在程序执行期间,某些更改无法应用。 若要应用这些更改,必须停止执行并生成新版本的代码。

不支持的方案

在以下调试方案中,“编辑并继续”不可用:

  • 在 Windows 98 上调试。

  • 混合模式(本机/托管)调试。

  • SQL 调试。

  • 调试 Dr. Watson 转储。

  • 在未选择**“在未经处理的异常上展开调用堆栈”**选项的情况下,在发生未经处理的异常之后编辑代码。

  • 使用**“附加到”来调试应用程序,而不是单击“调试”菜单上的“开始”**来运行应用程序。

  • 调试优化后的代码。

  • 当目标为 64 位应用程序时,调试托管代码。 如果希望使用“编辑并继续”,必须将目标平台设置为 x86 (**“项目属性”对话框->“编译”选项卡->“高级编译器”**设置。)

  • 如果由于生成错误无法生成新版本的代码,则对旧版本的代码进行调试。

在调试会话期间不能应用的 C/C++ 更改

  • 大多数的全局或静态数据的更改。

  • 从其他计算机复制并且未在本地生成的可执行文件的更改。

  • 影响一个对象(如类的数据成员)布局的数据类型的更改。

  • 添加超过 64k 字节的新代码或数据。

  • 添加要求在指令指针前存在构造函数的变量。

  • 影响需要运行时初始化的代码的更改。

  • 在某些实例中,添加异常处理程序。

  • 资源文件的更改。

  • 只读文件中的代码更改。

  • 没有相应 PDB 文件的代码的更改。

  • 没有对象文件的代码的更改。

如果进行了上面某项更改,然后尝试应用代码更改,**“输出”**窗口中就会出现错误或警告信息。

  • “编辑并继续”不更新静态库。 如果您更改了静态库,仍会继续执行老版本,且不显示任何警告。

当处于调试状态时,"调试"--->"窗口"---->"模块"

右击**“模块”窗口并选择“符号加载信息”后,将打开“符号加载信息”**对话框。

  • 信息
    根据 Visual Studio 安装设置和在**“选项”**对话框中对符号设置所做的更改,显示搜索符号文件(PDB 文件)的目录。

  • 符号设置
    单击此按钮可更改在**“选项”对话框(“调试”类别,“符号”**页)中的符号设置。 在该页上,您可以添加或移除符号位置、指定本地缓存位置(如果使用符号服务器)并控制何时搜索符号位置。

     

     

     

什么是0x8013XXXX

有时您可能会遇到从.NET返回的神秘HRESULT,它以0x8013开头,例如0x80131522。不幸的是,Visual Studio附带的错误查找并不能真正处理那些奇怪的HRESULT。它们是什么?

事实上,它们是由.NET/CLR在头文件中定义的。所有这些失败/成功的HRESULT都是在平台SDK include目录的corerror.h中定义的(通常是C:\程序文件(x86)\ Microsoft SDKs\Windows\v7.0A\include)。所有这些HRESULT的FACILITY都定义为FACILITY_URT=0x13(其中URT代表通用运行时是CLR的一个旧的三字母缩写,还有其他有趣的旧名称CLR-COM+就是其中之一)。如果您不记得什么是FACILITY,可以将其视为错误的类别–HRESULT 的FACILITY=FACILITY_URT是从CLR返回的。

该属性页指定调试解决方案时调试器查找源文件的位置。

若要访问“调试源文件”属性页,右击“解决方案资源管理器”中的“解决方案”,并从快捷菜单中选择“属性”。 展开“通用属性”文件夹并单击“调试源文件”页。

  • 包含源代码的目录
    包含调试器在调试解决方案时搜索源文件的目录列表。 还可搜索指定目录的所有子目录。

  • 不查找下面这些源文件
    输入不希望调试器读取的任何文件的名称。 如果调试器在以上指定的某个目录中找到这些文件之一,它将忽略该文件。 如果在调试期间出现“查找源”对话框,这时您单击“取消”,那么,您搜索的文件将被添加到此列表中,以使调试器不再继续搜索该文件。