-
-
[旧帖] [分享]VS符号设置 0.00雪花
-
发表于: 2014-11-22 22:31 1310
-
用windbg的时候要开启_NT_SYMBOL_PATH这个环境变量才方便,
可是这样用Visual Studio的时候就有问题了,vs启动调试的时候会联网去加载符号文件,经常会卡死,好像还没法禁用VS的符号,最讨厌这种自作聪明的设计了,一点灵活性都没有
百度查了半天都没搜索到好的解决办法,上谷歌英文版的查到了唯一的解决办法
https://connect.microsoft.com/VisualStudio/feedback/details/634787/cannot-disable-environment-variable-nt-symbol-path-in-options-debugging-symbols
就是“you may launch a cmd.exe and execute "set _NT_SYMBOL_PATH=" and then start VS2010 from this cmd.exe.”
自己动手,丰衣足食,调试器就是最好的工具
OD附加devenv.exe,Ctrl+B搜索_NT_SYMBOL_PATH,搜索到的内容都是环境变量,
MS的编程习惯应该是UNICODE的,搜UNICODE,搜索到3处
全部修改了,随便改个字母,试了一下,调试很快,不加载符号了
把第一个地方的还原,照样加载,那么就是第一处了,mspdb80.dll这个文件
那么patch掉这个文件就可以了。
我们再定位一下它的算法,_NT_SYMBOL_PATH的地址为
0cdb6d9c
这个字符串下内存访问断点:hr 0cdb6d9c
然后VS点调试,
断在了这里:
从堆栈的返回地址看这是计算字符串长度的,先hd 0cdb6d9c取消断点,Ctrl+F9执行到返回,再hr 0cdb6d9c,F9,可以断下的地方是一个API的内部
找到调用的地方
图
按F8跟几次可以发现是个循环,会依次取环境变量的每个部分跟下面几个字符串比较
看样子调用的地方还是不能改,要不然会影响到其它几个字符串,那还是按原先的办法,_NT_SYMBOL_PATH,随便改个字符 就OK了,
改dll不会影响其它的程序,因为这个dll是在VS的安装目录下的,不是system32目录
文件在\Common7\IDE目录的mspdb80.dll
这里是VS2005的,其它版本的依次是mspdb90.dll mspdb100.dllmspdb110.dll
在VS2013的路径是X:\Program Files\Microsoft Visual Studio 12.0\Common7\Packages\Debugger\symbollocator.dll
可是这样用Visual Studio的时候就有问题了,vs启动调试的时候会联网去加载符号文件,经常会卡死,好像还没法禁用VS的符号,最讨厌这种自作聪明的设计了,一点灵活性都没有
百度查了半天都没搜索到好的解决办法,上谷歌英文版的查到了唯一的解决办法
https://connect.microsoft.com/VisualStudio/feedback/details/634787/cannot-disable-environment-variable-nt-symbol-path-in-options-debugging-symbols
就是“you may launch a cmd.exe and execute "set _NT_SYMBOL_PATH=" and then start VS2010 from this cmd.exe.”
自己动手,丰衣足食,调试器就是最好的工具
OD附加devenv.exe,Ctrl+B搜索_NT_SYMBOL_PATH,搜索到的内容都是环境变量,
MS的编程习惯应该是UNICODE的,搜UNICODE,搜索到3处
全部修改了,随便改个字母,试了一下,调试很快,不加载符号了
把第一个地方的还原,照样加载,那么就是第一处了,mspdb80.dll这个文件
那么patch掉这个文件就可以了。
我们再定位一下它的算法,_NT_SYMBOL_PATH的地址为
0cdb6d9c
这个字符串下内存访问断点:hr 0cdb6d9c
然后VS点调试,
断在了这里:
从堆栈的返回地址看这是计算字符串长度的,先hd 0cdb6d9c取消断点,Ctrl+F9执行到返回,再hr 0cdb6d9c,F9,可以断下的地方是一个API的内部
找到调用的地方
图
按F8跟几次可以发现是个循环,会依次取环境变量的每个部分跟下面几个字符串比较
看样子调用的地方还是不能改,要不然会影响到其它几个字符串,那还是按原先的办法,_NT_SYMBOL_PATH,随便改个字符 就OK了,
改dll不会影响其它的程序,因为这个dll是在VS的安装目录下的,不是system32目录
文件在\Common7\IDE目录的mspdb80.dll
这里是VS2005的,其它版本的依次是mspdb90.dll mspdb100.dllmspdb110.dll
在VS2013的路径是X:\Program Files\Microsoft Visual Studio 12.0\Common7\Packages\Debugger\symbollocator.dll
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
谁下载
谁下载
看原图
赞赏
雪币:
留言: