如何利用.pdb文件去调试

转载自:http://www.cnblogs.com/metaboy/archive/2010/04/20/1716316.html

问题需求:

1.需要去调试一个exe,查看内部执行的过程,但是该exe的源代码是孤立的,利用make文件组织进行编译.每天会给出编译包。

问题的分析:

考虑1. 新建一个VS的工程,然后手动添加这些文件,然后编译调试。

考虑2. 既然有make文件,那么之前是否有编译成功的版本,该版本是否保存了调试的符号文件?

针对方案1:手动添加得考虑一下该工程的依赖关系,是否涉及太多的模块,否则将问题更加复杂化就不好了,我的需求中提到我的这个工程牵制的模块非常多,所以这个方案我肯定要放弃的。

针对方案2:我可以获取到每日编译包,打开找了一个,找到了该 *.exe,而且Symbol Files统一放到一个文件下管理,那么我没有理由不用第二种方案.

背景知识:

方案2肯定会用到的知识有符号文件,所以先大致说一下符号文件(Symbol Files)的定义.

符号文件(Symbol Files)是一个数据信息文件,它包含了应用程序二进制文件(比如:EXE、DLL等)调试信息,专门用来作调试之用,最终生成的可执行文件在运行时并 不需要这个符号文件,但你的程序中所有的变量信息都记录在这个文件中。所以调试应用程序时,这个文件是非常重要的。用 Visual C++ 和 WinDbg 调试程序时都要用到这个文件。

解决方案;

1.新建一个 Visual C++ Win32 Console Application project.

这个控制台的程序只是一个用来进行调试的宿主程序,所以可以任意的创建,在这里我创建一个默认的Win32 Console Application.

2.选择工程的属性,在Debugging标签下,设置以下几个信息:

  1. Command: C:\Test\Sample.exe;
  2. Command Arguments: test1  test2 (that depends on what you want to debug);
  3. Working Directory: C:\Test;

3.In VS, Tools -> Options -> Debugging -> Symbols, 然后指定Symbol file(.pdb) ,将该路径填入即可。

4.打开Sample.exe的源代码文件,将调试中需要用到的文件打开并设置断点,F5即可调试.

总结:

碰到这个问题的时候,我第一反应就是用第一种方案,但是花费很长时间之后还是问题重重之后,我就看是意识到可能这并不是很好的办法,通过分析和研究,选择第二种方案,不到10分钟就可以解决这个问题。

碰到问题一定要先分析一下已有的资源,然后再进行方案的选择。

其他参考:符号文件——Windows 应用程序调试必备

转载于:https://www.cnblogs.com/lbsx/archive/2010/10/09/1846519.html

如何利用.pdb文件去调试相关推荐

  1. 【C# 调试】.net中的 .pdb文件是什么,有什么用

    mscn:在 Visual Studio 调试器(C#)中指定符号 (.pdb) 和源文件 PDB全称Program Database,程序数据库 ( .pdb) 文件(也称为符号文件)将项目源代码中 ...

  2. macOS下利用dSYM文件将crash文件中的内存地址转换为可读符号

    一.使用流程 Windows下的程序运行崩溃时,往往可以利用pdb文件快速解析出程序崩溃的具体位置,甚至可以对应到源代码的具体行数.macOS下的symbolicatecrash也具备相应的功能.对应 ...

  3. VC++ 利用PDB和dump文件定位问题并进行调试

    转载:https://blog.csdn.net/zfs_kuai/article/details/43646665 转载:https://blog.csdn.net/i_chaoren/articl ...

  4. vs2010 利用DMP文件、pdb文件查找release下的异常行号的方法

    2018-01-12 创建人:Ruo_Xiao 开发环境:Windows7,VS2010,WinDbg 6.12. 一.源码 #include "stdafx.h" #includ ...

  5. vs无法产生pdb文件,也就无法断点调试

    webapi项目,Controller内的方法无法断点调试,甚至program.cs和startup.cs的方法都无法断点调试:但其引用的相关类库却可以断点调试. 1.按网上各种配置以后,发现还是不行 ...

  6. 在python平台上利用pymol来查找PDB文件中蛋白质的相互作用位点

    这篇代码写的可能有点问题,大家如果有需要,去看另一篇吧.如果有啥不足,请批评指正. 在python平台上利用pymol来查找PDB文件中蛋白质的相互作用位点 关于蛋白质结合位点,查阅了很多篇文献,大多 ...

  7. 无法查找或打开 pdb 文件。_Crash Dump调试:Symbol Server/Source Server、PDB原理分析

    背景 UE4引擎时不时要魔改编译.可能大一点的项目是难以避免的吧 ┓( ´∀` )┏ 工程C++会自动编译,有持续集成平台做统一的编译和分发.这样可以不用每个人都编译引擎和工程C++了,代码安全性和开 ...

  8. Qt 杂记 —— Qt安装并配置调试文件,添加源码调试pdb文件

    文章目录 Qt 杂记 -- Qt安装并配置调试文件,添加源码调试pdb文件 一.安装QT及QTCreator 二.在VS中使用QT 个人格言 Qt 杂记 -- Qt安装并配置调试文件,添加源码调试pd ...

  9. visual studio 调试时提示 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。

    问题描述 "Win32Project3.exe"(Win32): 已加载"D:\software\VS2013\VS2013 文档\Win32Project3\Debug ...

最新文章

  1. php中$_REQUEST、$_POST、$_GET的区别和联系小结
  2. laravel 5.1 Eloquent常见问题
  3. struts2配置的ajax参数传递方法
  4. bootstrap File Input 多文件上传插件使用记录(二)删除原文件
  5. 企业网站前端制作实战教程 JQuery CSS JS HTML 登录表单验证
  6. oracle data guard方案,Oracle Data Guard 概念篇
  7. android开发 存储权限,Android openFileOutput – 没有创建存储的权限
  8. AS3 XML全部用法
  9. 20155238 2016-2017-2 《Java程序设计》第六周学习总结
  10. [AtCoder Beginner Contest 133]F - Colorful Tree
  11. python-gui-pyqt5的使用方法-6--lambda传递参数的方法:
  12. 让Windows 7安装更快速.
  13. 算法学习系列(MCMC):MCMC采样
  14. 快来,女神节已过,这边的大奖还没人领~【每一个女性都值得被赞美】 ——用ADC制奖状,赢大奖
  15. myScript调研,电子手写板使用,纯干货
  16. 地面气象观测数据-A文件转excel方法
  17. 假装接入阿里云---PC运行mqtt.fx
  18. 2022-2028年中国代餐轻食市场投资分析及前景预测报告
  19. 从零开始的WordPress个人博客搭建
  20. AI高效学习路径总结

热门文章

  1. 吃透了这些Redis知识点,面试官一定觉得你很NB
  2. 迎接 2019:软件开发新趋势预测
  3. JSON是什么,为什么这么流行?
  4. 【手写系列】纯手写实现JDK动态代理
  5. oracle apply handler,做什么BaseHandler.apply_response_修复在django吗?
  6. oracle 日结 数据量大,如何对一个oracle11gsql语
  7. 案例|数据中心UPS电源系统割接实施方案
  8. 国家发改委:分两批在8个地区建设全国一体化算力网络国家枢纽节点
  9. 首批49个国家绿色数据中心名单公布
  10. coredump 断点_coredump调试的使用