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。看起来它可能非常有用。