【发布时间】:2020-09-11 01:14:03
【问题描述】:
在编写 C++ Windows 应用程序时,我使用 SymInitializeW 来初始化符号以获取回溯。正如文档所述,我正在检查返回码,然后在 SymInitializeW 返回 false 时使用 GetLastError and FormatMessage(如在 example 中)。
但是,当我这样做时,我收到“传递给系统调用的数据区域太小”的错误消息。我不确定那指的是什么,因为实际上没有传递“数据区域”——只有进程句柄、搜索路径的 PCWSTR 和布尔值。 -- 看起来符号加载有效,这让人倍感困惑。 (例如,如果我跳过错误处理,事情似乎可以正常工作。)
此消息是否指向我实际上做错的事情,还是虚假的?如果是虚假的,为什么 SymInitializeW 返回 false?
【问题讨论】:
-
你为什么要收集堆栈跟踪?只需设置 Windows 错误报告并在出现未处理的异常时获取 real 小型转储。或者,如果您想收集错误条件之外的转储,请致电
MiniDumpWriteDump。额外的好处:您不必发送调试符号。