windbg符号表问题

1. 首先设置符号表路径

在系统环境变量添加一个 _NT_SYMBOL_PATH 值为srv*d:\symbols*http://msdl.microsoft.com/download/symbols

这样IDA, windbg, vs 都会自动到该目录加载符号表.

对于这个路径d:\symbols, 可以自定义任何位置, 最好不要用离线符号表,因为你根本就找不到对应的系统版本,而且

对于win10等仍然在更新的系统,符号表过一段时间就会有所变化,到时又要重新下载一个多G的符号表,反而麻烦.

2.所有不同版本操作系统的符号可以放在同一目录d:\symbols下.

为什么?

本人经过测试,同一个文件的符号表会在该目标目录下生成以hash值命名的不同文件夹,例如ntkrnlmp.pdb:

对于这2个文件夹,一个是本机win10的,还有一个是win7 64位系统的, 所以如果有xp的,win8的, 甚至不同更新版本的win10的这个ntkrnlmp.pdb

符号表,会同时有多个文件夹对应不同的版本,所以不需要担心冲突.

3.设置好符号表路径还是出错

解决方案:

(1)首先网络能通, 直接在浏览器访问http://msdl.microsoft.com/download/symbols 看能不能打开

(2) 对于被调试目标,例如xp和win7 64位系统, 应该使用不同版本的windbg, 例如xp可以使用6.X版本的32位的windbg来进行内核调试

而win7 64位最好使用64位的 10.X版本的windbg调试. 否则 如果用32位的6.x版本调试win7 64位就会出现 在存储符号表的目录中下载了符号表

但是只有1KB大小,显然是错的, 当时这个问题纠结了我很久, 后来换了64位的 10.X版本的windbg 设置好符号表路径后 自动解决问题

时间: 2024-10-29 19:06:25

windbg符号表问题的相关文章

[驱动开发] windbg符号表

新建"环境变量 - 系统":_NT_SYMBOL_PATH 值为:SRV*FullDirPath*http://msdl.microsoft.com/download/symbols 比如:SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols 之后,手动创建文件夹FullDirPath:mkdir FullDirPath 在windbg中,加载符号: .reload /f xxx 比如: .reload /f nt .rel

Windbg符号与源码 《第二篇》

符号文件是一种辅助数据,它包含了对应用程序代码的一些标注信息,这些信息在调试过程中非常有用.如果没有辅助数据,那么能获得的信息就只有应用程序的二进制文件.二进制文件很难调试,因为无法看到代码中的函数名.数据结构名等.这正是符号文件能显示的.符号文件的扩展名通常是pdb,调试器能够很好地解析这种文件格式. 编译器和链接器在创建二进制镜像文件(诸如exe.dll.sys)时,伴生的后缀名为.dbg..sym或.pdb的包含镜像文件编译.链接过程中生成的符号信息的文件称为符号文件.具体来说,符号信息包

IDA 与VC 加载符号表

将Windbg路径下的symsrv.yes 拷贝到ida 的安装目录,重新分析ntoskrnl.exe, 加载本地的符号表 添加环境变量  变量名:_NT_SYMBOL_PATH变量值:SRV*{$Path}*http://msdl.microsoft.com/download/symbols/将“{$Path}”替换为要存储pdb符号表文件的路径,比如:C:\PDB,在线的符号下载. 于是用IDA,或者在VC里写程序调试时,都会从网上自动下载符号表……msvcrt.pdb,ole32.pdb,

【转】VS设置符号表

原帖 : 让Visual Studio载入Symbol(pdb)文件 让Visual Studio载入Symbol(pdb)文件 在VC编译工程的编译连接阶段,会产生Symbol文件,也就是常说的 pdb 文件.pdb 的全称为program database,在 MSDN 中的解释为,pdb 文件是一个在编译和链接阶段产生的,包含了类型和调试符号信息的二进制文件.pdb 文件中包含了各个函数的符号表,也是进行 WinDbg 调试必不可少的文件. 既然 pdb 文件是给调试器使用的,那么 Vis

下载微软符号表的教程

调试时没有符号表是很蛋疼的事..尤其是分析漏洞时,明明找到地方了,却不知道自己身处何处. 这里用windbg自带的symchk工具下载微软符号表. 首先进入windbg的目录,使用cmd执行 symchk /r c:\windows\system32\secur32.dll /s SRV*c:\symbols\*http://msdl.microsoft.com/download/symbols 高亮处是要下载的符号和要保存的地址 symchk /r c:\windows\system32 /s

【转】Windbg符号路径设置

http://blog.csdn.net/witxjp/article/details/8118481 使用Windbg第一步要做的,就是设置符号文件的位置,就是pdb文件. 符号路径设置:Ctrl+S在弹出的窗口中输入你的符号路径,路径的格式只要符合Windows操作系统路径格式即可,路径可以多个,中间以分号间隔,d:\symbols\win2k3_en:Windbg可以自动到Microsoft的服务器上下载符号表文件(.dbg或.pdb,有时DLL和EXE也会下载),只要在符合表路径里做如下

查看程序符号表的几个命令

objdump -t xxx.o [email protected]:~/Documents/encrypchip$ objdump -t main.o main.o: file format elf32-little SYMBOL TABLE: 00000000 l df *ABS* 00000000 main.c 00000000 l d .text 00000000 .text 00000000 l d .data 00000000 .data 00000000 l d .bss 0000

算法-符号表的实现(顺序查找和二分查找)

符号表是一种存储键值对的数据结构,支持两种操作插入和查找,就是将一组新的键值对存入表中然后根据给定的键得到对应的值,在编程语言中常用Dictionary原理类似.符号表是一种典型的抽象数据结构,在生活之中应用的场景也很多,可以根据钥匙开门,域名解析的时候的IP地址查询,字典和图书的简介和页数,key和value是密不可分的,通过key我们可以很快找到我们需要的value. 无序链表的顺序查找 主要通过Node节点存储数据,之前的博客中有关于链表的实现,详情可参考之前的博客,代码有注释就解释太多了

Symbol Table(符号表)

一.定义 符号表是一种存储键值对的数据结构并且支持两种操作:将新的键值对插入符号表中(insert):根据给定的键值查找对应的值(search). 二.API 1.无序符号表 几个设计决策: A.泛型 在设计方法时没有指定处理对象,而是使用了泛型. 并且将键(Key)和值(Value)区分开来. B.重复键的处理 规则: 每个值(Value)都只对应一个键(Key)(即不允许存在重复的键). 当用例代码向表中存入的键值对和表中的已有的键(以及关联的值)冲突时,新的值替代旧的值. C.Null 键