编程中,debug既是技术,又是技巧。熟练的掌握调试工具可以加速软件问题的解决,这对于底层开发和高级开发都是十分必要的。本文就windows调试器的设置问题,根据个人在windbg上的使用经验进行总结,既算是对自己的总结,也算是份大家一起分享自愿吧。本文的前提是windbg已经安装完毕,适合对windbg有一定了解的读者。

1.JIT设置。通过JIT设置,可以改变系统默认的调试器-drwtsn32。当程序抛出或发生异常时,如果没有程序自身进行异常处理,而且没有运到其他调试器的拦截,那么,系统会将此一场交给JIT的设置进行处理。这是 异常陷阱处理的一种情况,详细的原理可以参看"windows internal(4th edition)"。对windbg的设置比较简单,只要运行命令:windbg -I即可。实际上,修改了HKLM/Software/Microsoft/Windows NT/CurrentVersion/AeDebug的健值。如果要支持对托管程序的调试的话就要修改注册表:
HKLM/Software/Microsoft/.NETFramework/DbgJITDebugLaunchSetting 为2
HKLM/Software/Microsoft/.NETFramework/DbgManagedDebugger 为Windbg的路径
在windbg端进一步设置好symbol path和source path就可以在异常发生时进行step by step的调试了。

2.镜像文件运行设置。通过该设置,可以在制订程序运行时自动附加到windbg上去,太方便了:)。注册表项HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options的最后一个子项"Your Image File Name Here without a path",修改为镜像名称,如iexplore.exe。健值Debugger默认值ntsd -d,用来调试内核镜像的,可去掉-d,使用ntsd调试,也可以修改为windbg的路径。GlobalFlag健值是通过工具gflags.exe来修改的,具体到应用中再说了。

本文仅是对设置方法进行了梳理,在具体应用中就灵活一些了。比如关于如何调试 Windows 服务,可以参考http://support.microsoft.com/kb/824344。

windows调试器设置相关推荐

  1. Qt安装Windows调试器

    Qt安装Windows调试器 问题:Win10下使用Qt无法调试,这是因为没有指定调试器. 解决方法: 1. 打开网址:https://developer.microsoft.com/zh-cn/wi ...

  2. VS中 本地Windows调试器 与 生成解决方案

    ① 平时,我们使用VS会直接新建一个项目,然后在使用时,双击.sln的文件便可打开VS工程:因为此时的.sln文件表示,我们创建的是一个解决方案. ② 当出现,VS打开方式为双击.bat文件时,此时需 ...

  3. Qt Creator设置调试器

    Qt Creator设置调试器 设置调试器 支持的本机调试器版本 支持的GDB版本 支持的CDB版本 支持的LLDB版本 安装本机调试器 GDB Windows调试工具 适用于macOS的调试工具 本 ...

  4. 处理器,操作系统,编译器,调试器,语言和工具,网络

    目录 处理器 常用处理器架构.指令集 国产处理器 字长和处理器类型的关系 不同处理器的大小端 查看处理器类型 核与线程之间的关系 如何绑定处理器 基本的汇编原子操作 加减 比较后交换 交换 操作系统 ...

  5. 跨平台PHP调试器设计及使用方法——高阶封装

    在<跨平台PHP调试器设计及使用方法--协议解析>一文中介绍了如何将pydbgp返回的数据转换成我们需要的数据.我们使用该问中的接口已经可以构建一个简单的调试器.但是由于pydbgp存在的 ...

  6. Linux 内核调试器 调试指南

    Linux 内核调试器内幕 KDB 入门指南 Hariprasad Nellitheertha (nharipra@in.ibm.com), 软件工程师, IBM 简介: 调试内核问题时,能够跟踪内核 ...

  7. W801单片机学习笔记——调试器的配置与使用(适用于W801和W806)

    1.前言 在以往的Cortex-M内核单片机的开发中,最离不开的一个东西就是调试器,什么J-Link,ST-Link,DAP-Link等等,没了他们调试程序感觉浑身难受,效率直线下降.调试器就好比是战 ...

  8. 使用Python脚本强化LLDB调试器

    https://www.cnblogs.com/yuanxiaoping_21cn_com/p/5433286.html LLDB是Xcode自带的调试器,作为一个iOS应用开发程序员,平时我在开发应 ...

  9. 【Windows 逆向】OD 调试器工具 ( OD 调试数据时硬件断点对应的关键代码 | 删除硬件端点恢复运行 )

    文章目录 前言 一.OD 调试数据时硬件断点对应的关键代码 二.删除硬件端点恢复运行 前言 在 [Windows 逆向]OD 调试器工具 ( CE 中获取子弹动态地址前置操作 | OD 中调试指定地址 ...

最新文章

  1. uC/OS-II源码分析(四)
  2. Redhat安装gtk2.0和pkg-config
  3. Mnist 0的波函数
  4. 阿里GTS解密--GTS的原理、架构与特点
  5. [WinCE版凯立德]2013夏季版地图2E21J0D更新下载(9.8增加2E23J0D分省地图)
  6. 数据结构与算法之字符凭拼接最低字典序和数据流中取中位数
  7. mysql无法打开和锁定权限表_MySQL在连续查询后丢弃连接
  8. html课表插件,课程表插件Timetables(原创)
  9. MVC中使用Entity Framework 基于方法的查询学习笔记 (二)
  10. 《疯狂Java讲义》(二十九)---- JDBC
  11. 【BZOJ3050】Seating,线段树
  12. 谈一下ACM的入门书籍及方法
  13. 软件one pin错误是啥意思_理想ONE,从交车就开始道歉,是有礼貌的新势力
  14. robot光线机器人安卓版_灯光机器人中文版下载-灯光机器人游戏下载v1.6.5 安卓版-2265游戏网...
  15. python 线程池使用
  16. Ubuntu 14.04 下安装wiznote客户端
  17. geektool 天气_桌面自定义:适用于OS X的GeekTool简介
  18. mkv文件怎样转成mp4
  19. 论文排版的正确方式—LaTeX【分享贴】
  20. 【转载】Android系统裁剪方法

热门文章

  1. 算法(69)----最长和谐子序列
  2. Ensemble learning(集成学习)
  3. 前端编码规范,个人感觉bootstrap总结的不错,拿出来给大家分享
  4. getResources()方法
  5. webstorm+nodejs+JetBrains IDE Support+chrome打造前端开发神器
  6. HDU 1247(Hat’s Words )
  7. Python学习:使用Python解释器
  8. Hough Transform 的算法思想
  9. STL中迭代器的作用,有指针为何还要迭代器
  10. 土地利用转移矩阵图怎么做_肺癌骨转移有哪些早期症状?做什么检查可以发现?怎么治疗?...