关于PDB文件和dll调试
2013-12-10 14:45
190 查看
转自:http://blog.sina.com.cn/s/blog_78fd98af0101g8hu.html
一、何谓符号文件?
符号文件(Symbol Files)是一个数据信息文件,它包含了应用程序二进制文件(比如:EXE、DLL等)调试信息,专门用来作调试之用,最终生成的可执行文件在运行时并不需要这个符号文件,但你的程序中所有的变量信息都记录在这个文件中。所以调试应用程序时,这个文件是非常重要的。用 Visual C++ 和 WinDbg 调试程序时都要用到这个文件。
在 Windows 系统中,符号文件以 .pdb 为扩展名,比如:每个 Windows 操作系统下有一个 GDI32.dll 文件,编译器在编译该 DLL 的时候会产生一个 GDI32.pdb 文件,一旦你拥有了这个 PDB 文件,那么便可以用它来调试并跟踪到 GDI32.dll 内部。该文件和二进制文件的编译版本密切相关,比如修改了 DLL 的输出函数,再编译该 DLL,那么原先的
PDB 文件就过时了,不能再用老的 PDB 文件来做调试工作,而必须使用最新的 PDB 文件版本。
Visual C++ 编译代码后会在 Debug 或者 Release 目录下生成一个 PDB 文件。一般情况下,符号文件包括以下的数据信息:
全局变量(Global variables);
局部变量(Local variables);
函数名和它们的入口地址(Function names and the addresses of their entry points);
FPO 数据(Frame Pointer Omission):Frame Pointer 是一种用来在调用堆栈(Call stack)中找到下一个将要被调用的函数的数据结构源代码的行序号(Source-line numbers);
from:http://www.vckbase.com/index.php/wv/1418
二、DLL调试
1. 写一个调用Dll中函数的控制台测试程序test。
2. 设置test,将debug下编译连接生成dll和lib复制到.exe所在路径,使得test能够运行起来。
3. 将与dll一同产生的debug文件夹下的pdb文件复制到sln所在路径下,运行调试test,F11就能够进入所调用的dll中的函数。
一、何谓符号文件?
符号文件(Symbol Files)是一个数据信息文件,它包含了应用程序二进制文件(比如:EXE、DLL等)调试信息,专门用来作调试之用,最终生成的可执行文件在运行时并不需要这个符号文件,但你的程序中所有的变量信息都记录在这个文件中。所以调试应用程序时,这个文件是非常重要的。用 Visual C++ 和 WinDbg 调试程序时都要用到这个文件。
在 Windows 系统中,符号文件以 .pdb 为扩展名,比如:每个 Windows 操作系统下有一个 GDI32.dll 文件,编译器在编译该 DLL 的时候会产生一个 GDI32.pdb 文件,一旦你拥有了这个 PDB 文件,那么便可以用它来调试并跟踪到 GDI32.dll 内部。该文件和二进制文件的编译版本密切相关,比如修改了 DLL 的输出函数,再编译该 DLL,那么原先的
PDB 文件就过时了,不能再用老的 PDB 文件来做调试工作,而必须使用最新的 PDB 文件版本。
Visual C++ 编译代码后会在 Debug 或者 Release 目录下生成一个 PDB 文件。一般情况下,符号文件包括以下的数据信息:
全局变量(Global variables);
局部变量(Local variables);
函数名和它们的入口地址(Function names and the addresses of their entry points);
FPO 数据(Frame Pointer Omission):Frame Pointer 是一种用来在调用堆栈(Call stack)中找到下一个将要被调用的函数的数据结构源代码的行序号(Source-line numbers);
from:http://www.vckbase.com/index.php/wv/1418
二、DLL调试
1. 写一个调用Dll中函数的控制台测试程序test。
2. 设置test,将debug下编译连接生成dll和lib复制到.exe所在路径,使得test能够运行起来。
3. 将与dll一同产生的debug文件夹下的pdb文件复制到sln所在路径下,运行调试test,F11就能够进入所调用的dll中的函数。
相关文章推荐
- 包含别人的dll,然后我们用类库再次封装成dll的时候的注意事项;源文件与模块生成时的文件不同;创建调试信息文件 ··PDB时发生意外的错误,进程无法访问文件,因为另一个程序正在使用此文件
- 【Tip】如何让引用的dll随附的xml注释文档、pdb调试库等文件不出现在项目输出目录中
- 关于dll的pdb文件的小贴士
- 关于找不到aspnet_isapi.dll文件的问题
- 关于vs启动调试报错:CS0016: 未能写入输出文件“xxxxxxxx”--“目录名称无效。”解决方法
- 关于lib文件 和 DLL文件
- vs2008怎么调试dll文件?
- 【vs调试】PDB 文件:每个开发人员都必须知道的
- unity如何调试dll库文件
- 关于“ISIS_PJPlan_Doc.dll必需和计划书文件在同一目录下才能检查保护”的问题
- 如何单步调试 dll 文件里面函数
- C#报错:创建调试信息文件 ……obj\Debug\model.pdb: 拒绝访问
- ASP.NET2.0关于BIN目录下DLL文件访问的问题
- 关于Lua调用c++ DLL 文件的详解
- [原创]Windows版Qemu2.5.1.1(带pdb调试文件)
- 关于dll头文件宏声明
- 关于调试时出现“源文件与模块生成时的文件不同”
- 细节决定成败—关于.net的.dll.refresh文件
- 关于多线程 DLL (/MD)与多线程调试(/MTd) .
- 关于VS添加外部dll文件的问题