我对这个问题的理解是,vs无法加载一些系统符号,所以调试的时候没法显示具体的调试信息(例如出现的异常在系统代码中的具体位置之类的)。
找了一圈,找到一个可能的解决办法:
1.安装debugging tools for windows
下载链接:windows 调试工具下载
为什么要下载呢?因为我们需要用到symchk工具,具体理由参考如下链接:
windows symbol packages for debugging中的symbol package deprecation解释:
翻译一下:关于为无法连接互联网的机器获取符号的相关信息,详见using a manifest file with symchk.(这在文中是个连接),进去以后是关于如何用symchk获取程序所需的符号信息的方法。
所以我们就要先安装标题所提到的工具,里面包含了symchk。我是参考了其中的作为独立工具集方法安装。
2.运行你的app
这一步比较容易忽略,需要先运行你的app,然后才能用symchk获取所需的符号信息。当然最好先添加一下系统环境变量,便于在cmd中使用
如果是默认安装的话,symchk所在路径应该是c:\program files (x86)\windows kits\10\debuggers\x64。
3.执行cmd命令获取符号信息
参考using a manifest file with symchk中的方法,在命令行中执行以下两条命令读取、下载所需符号信息:
//读取
c:\>symchk /om c:\manifest\man.txt /ie yourapp.exe
//下载
c:\>symchk /im c:\folderonothercomputer\man.txt /s srv*c:\mysymbols*\\aserver\symbols
其中需要修改的包括:
c:\manifest\man.txt:指向你想保存读取信息的文件位置;
yourapp.exe:你的app exe文件(这里是相对路径,最好是在exe所在目录下执行cmd);
c:\folderonothercomputer\man.txt:这里指向刚才保存的man.txt,由于文章是假设你在另一台互联网机器上下载符号信息,所以路径名换了个;
c:\mysymbols:这是保存符号文件的目录,前后的内容都不用动
当然我自己试的是下载全部失败,所以就没再深究了,感兴趣的同学可以继续探索一下。
发表评论