【问题标题】:C++ MiniDumpWriteDump - FullMemoryDump doesn't give me much informationC++ MiniDumpWriteDump - FullMemoryDump 没有给我太多信息
【发布时间】:2010-02-19 12:29:44
【问题描述】:

我一直在使用 MiniDumpWriteDump 在崩溃时生成转储文件。我一直在尝试进行完整的内存转储。这似乎有效,并按预期生成了一个大文件。

但是,当我将这个巨大的文件加载到 Visual Studio (2005) 中时,我似乎无法看到堆上任何变量的值。事实上,它给我的信息并不比普通转储多...

我对 MiniDumpWriteDump 的调用如下;

MINIDUMP_EXCEPTION_INFORMATION mdi;

mdi.ThreadId = GetCurrentThreadId();
mdi.ExceptionPointers = in_pInfo;
mdi.ClientPointers = FALSE;

MiniDumpWriteDump(GetCurrentProcess(),GetCurrentProcessId(),
    fHan,
    MiniDumpWithFullMemory,
    &mdi,
    0,
    0);

注意:我有一套完整的 pdb,一个有效的堆栈,在我的测试应用程序中,我用被零除来伪造一个错误。

知道这是为什么吗?

干杯 丰富

【问题讨论】:

  • 您尝试过使用 WinDbg 吗?它在那里工作吗?
  • 这有什么结果吗?

标签: c++ visual-studio minidumpwritedump


【解决方案1】:

可能是因为您没有正确的 .pdb 文件。或者因为您的代码已经通过了优化器版本的 RSA 加密。或者因为您有 x64 构建,其中指针在寄存器中传递。或者因为您的代码由于堆损坏而崩溃,从而使调试信息同样不可靠。或者崩溃线程的堆栈被炸毁,没有面包屑可跟踪。

任君挑选。

【讨论】:

  • 好吧,我正在测试应用程序,所以我伪造了除以零。堆栈完好无损,pdb 已全部加载且正确。但是我看不到任何堆或全局变量的值。
  • 用这样的重要信息更新您的问题。不提前说出来只是浪费大家的时间。您还需要准确记录您使用了哪些 MiniDumpWriteDump() 标志以及“看不到”的含义。
猜你喜欢
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多