我正在将所有Windows XP生产应用程序转换为Windows 7,但我遇到了一些问题。
1:每当我收到错误时,在XP机器上,它会中断执行并停止出现问题的代码行。在Windows 7中,它只抛出一个通用异常,我不知道发生错误的代码行在哪里。非常令人沮丧。
2:在XP中,如果我放置断点或跟随代码,我可以在运行代码时动态编辑更改。如果我在Windows 7中尝试它,它说64位应用程序不允许这样做。再次,非常令人沮丧。
有任何解决这些问题或至少解决这些问题的想法吗?
答案 0 :(得分:1)
一般来说,这两个平台之间的调试器行为应该没有任何区别。以下是我的建议:
根据您的描述,我无法确定调试器是否在第一次机会异常时中断并且它没有找到源(可能是符号未找到/不匹配?)或者如果它没有打破。如果是前者,请选中“Debug - > Windows - > Modules”并验证是否为相关模块加载了符号。如果是后者,也许Windows XP上的调试器被配置为在第一次机会异常时中断而Windows 7上的调试器不是?比较“Debug - > Exceptions”下的设置,看看是否有任何差异。请注意,如果您在“工具 - >选项 - >调试 - >常规”中启用了“仅我的代码”,这也会影响调试器在第一次机会异常时的中断行为。
64位进程不支持“编辑并继续”功能,因此调试器会在您调试64位进程时尝试修改源代码时通知您。这可能是运行应用程序的“AnyCPU”(我的猜测)或“x64”构建的结果。编辑和继续工作的唯一方法是调试32位进程;这可以通过在“Build - > Configuration Manager”中将目标平台更改为“x86”来实现(如果平台不在列表中,则添加平台)。当然,这假定您的应用程序不依赖于64位模块。
答案 1 :(得分:0)
您是否大致了解错误的来源?如果是这样,并且还没有完成,抛出一个通用的try catch并打破catch;然后,检查堆栈跟踪以查看生成错误的行。
希望这有帮助。