Windows IDEBUG符号不';无法在符号服务器中找到符号

Windows IDEBUG符号不';无法在符号服务器中找到符号,windows,debug-symbols,dbghelp,Windows,Debug Symbols,Dbghelp,我正在编写一个小应用程序,它打印出给定崩溃转储的调用堆栈。代码或多或少基于本教程: 当调试符号位于崩溃转储旁边时,代码工作正常。但是,当我的应用程序位于符号服务器中时,它找不到调试符号。我的符号服务器在\NT\u symbol\u路径中指定。我确信\u NT\u SYMBOL\u PATH和符号服务器没有问题,因为当我在Visual Studio和WinDbg中打开崩溃转储时,他们能够在符号服务器中找到符号 我将SYMOPT_DEBUG选项添加到我的idebugsymbles实例中,得到以下输出

我正在编写一个小应用程序,它打印出给定崩溃转储的调用堆栈。代码或多或少基于本教程:

当调试符号位于崩溃转储旁边时,代码工作正常。但是,当我的应用程序位于符号服务器中时,它找不到调试符号。我的符号服务器在
\NT\u symbol\u路径中指定。我确信
\u NT\u SYMBOL\u PATH
和符号服务器没有问题,因为当我在Visual Studio和WinDbg中打开崩溃转储时,他们能够在符号服务器中找到符号

我将
SYMOPT_DEBUG
选项添加到我的
idebugsymbles
实例中,得到以下输出:

DBGHELP:\u NT\u SYMBOL\u路径

srv*c:\localsymbols*my_symbol_server*http://msdl.microsoft.com/download/symbols
DBGHELP:符号搜索路径

.;srv*c:\localsymbols*my_symbol_server*http://msdl.microsoft.com/download/symbols
我想这意味着我的idebugsymbles实例知道symbol服务器

有人知道我做错了什么吗


提前感谢。

您应该获得windows调试工具(现在从windows工具包获得)并使用组件 从中选择dbgeng.dll、dbghelp.dll和symsrv.dll。操作系统在System32中有这些dll的标准版本,不幸的是,它们的功能受到限制。例如,他们不支持Windows7上的符号服务器

也许您会发现我们的项目很有用:


例如,此代码打印出当前堆栈:

StackPtr  stk = getStack();
for ( int i = 0; i < stk->getFrameCount(); ++i )
    dprintln( findSymbol( stk->getFrame(i)->getIP() ) )
StackPtr stk=getStack();
对于(int i=0;igetFrameCount();++i)
dprintln(findSymbol(stk->getFrame(i)->getIP())

成功了,谢谢你的帮助。我去查一下pykd。看起来它可能非常有用。