【问题标题】:Is there way to change executable path when debugging crashdumps?调试故障转储时是否可以更改可执行路径?
【发布时间】:2013-08-13 17:44:01
【问题描述】:

在尝试调试我们的应用程序在客户 PC 崩溃期间的小型转储时,我发现他们安装应用程序的路径似乎会影响我的可执行文件的安装位置以进行调试。

例如,如果用户安装在某个位置“N:\AppFolder”,我不得不创建一个带有字母“N”和“AppFolder”的驱动器,并在调试应用程序之前安装我的应用程序。否则,我会收到一条错误消息,提示找不到模块。有没有办法在调试故障转储时选择可执行文件或模块的任意位置?

环境: 视觉工作室 2010,Windows 7 故障转储属于小型转储类型。

【问题讨论】:

  • 这很重要。我从来没有寻找替代方案,只是更容易创建目录并在那里复制 EXE 和 PDB 文件。您可以使用 SUBST 命令创建一个 N: 驱动器。
  • 是否使用堆栈遍历 api (StackWalk()) 可以让我们以编程方式设置此路径以生成堆栈跟踪?

标签: visual-studio-2010 visual-c++ visual-studio-debugging crash-dumps minidump


【解决方案1】:

作为described by Microsoft,打开即时窗口并输入.exepath进行更改。

【讨论】:

  • 一旦我们设置了路径,就有办法用新路径刷新调试会话。似乎只有在调试已经开始时才设置它(否则在设计模式错误时会抛出无法执行的命令)。但此时 IDE 已经显示二进制未找到错误,似乎没有办法强制它采用新路径。
  • Aah 看起来 C++ IDE 不支持 .exepath :(。根据:“stackoverflow.com/questions/15648455/…。我总是收到错误“CXX0013: Error: missing operator”。
【解决方案2】:

我使用 Windows 错误报告系统来接收包含故障转储文件的 .cab 文件。我使用 Visual Studio 来处理转储文件,我不必重新创建用户环境来处理转储文件。我唯一的要求是将转储文件复制到我本地安装的用户已安装软件的副本中。我不需要使用用户指定的相同命名约定。然后我确保我的符号文件指向适当的缓存并开始调试。此方法适用于 Visual Studio 或 WinDbg。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多