浏览器开发系列第五篇:Debugging with WinDBG

Windbg相信windows开发的人都知道,有些人用的溜儿溜儿的,有个crash,直接拿这个工具一分析,就定位出来了。非常好用。以前有个同事,做sdk开发的,会各种命令。来北京后,还去过微软面试(不过当时是做外包,挣得也不少),问的问题就包括会不会用windbg定位问题。当时就会几个简单的命令,最后还是没面上(不堪回首)。

使用windbg调试windows下的程序,只要有符号文件,问题定位分分钟的事。下面主要讲一下使用windbg调试chromium。有些是从官网上对翻过来的,如果大家看不明白,可以直接加我们的公众号:程序员互动联盟(coder_online)来进行互动。

Windbg是一个强大的免费工具,它比起VisualStudio的调试器还要强大,能够看到当前的内存栈等信息,但是也比那个难用(和Linux下的gdb差不多)。大家可以去微软官网下载最新版本安装,官网有两个版本:32位和64位。我们使用32位来调试chromium。

初始化

1.设置符号路径

打开windbg,文件菜单->符号文件路径(快捷键ctrl+s)

这里假设c:\code\symbols这个是你符号文件存储的位置(这个可以自己随意设置,但是必须保证有足够的空间,找个空盘符有个10G左右的,新建一个文件夹,以后就别管了),设置符号路径如下:

SRV*c:\code\symbols*http://msdl.microsoft.com/download/symbols;SRV*c:\code\symbols*https://chromium-browser-symsrv.commondatastorage.googleapis.com

2.在视图窗口中可以选择显示一些窗口

3.使用文件下的一些功能去加载想要调试的进程或者可执行文件

4.设置源码路径

如果想直接定位到源码位置,可以设置源码路径:文件->源码路径,最好是本地代码,直接指定chromium网络地址不太现实:

使用windbg调试chromium比较重要的一点是,它可以调试子进程。一个比较简单的方法就是在使用“Open Executable”打开窗口时,选中下面的选项,如图所示:

也可以通过attach来调试运行的进程,使用detach来解除调试进程。

#重要说明

(1) windbg命令分为标准命令,元命令和扩展命令。

标准命令提供最基本的调试功能,不区分大小写。如:bp g dt dv k等

元命令提供标准命令没有提供的功能,也内建在调试引擎中,以.开头。如.sympath .reload等

扩展命令用于扩展某一方面的调试功能,实现在动态加载的扩展模块中,以!开头。如!analyze等

(2) 进入调试状态时,直接回车可重复执行上一条命令;按上下方向键可以浏览和选择以前输入过的命令

(3) 神奇的Tab键,进行命令补全;ESC清除当前命令输入框中的文本

(4) 使用;作为分隔符,可以在同一行输入多条命令

(5) 下图红色框中的“0:047”。【0为当前调试会话的进程号;047为调试会话的线程号】

(6) 当命令提示符显示*BUSY*时,即使命令输入框可以输入命令,但输入的命令不会立即被执行,要等windbg空闲时才能执行。

可使用Ctrl + Break来终止一个长时间未完成的命令。

如果大家想更深入了解windbg的知识,可以去官方网站学习。另外推荐一本学习的书籍《软件调试》。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-04-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

在Ubuntu 16.04上安装OpenVAS 8

OpenVAS(开放式漏洞评估系统)是一个客户端/服务器架构,它常用来评估目标主机上的漏洞。OpenVAS是Nessus项目的一个分支,它提供的产品是完全地免费...

962
来自专栏张戈的专栏

网站安全检测提示“页面异常导致本地路径泄漏”的解决办法

在 360 网站安全检测时,经常报出“页面异常导致本地路径泄漏”的漏洞,尤其是新安装的 WordPress 网站,那是必然会报。。。 这些漏洞,之前玛思阁就已经...

3448
来自专栏数据之美

Ubuntu on Windows10 跨平台开发环境搭建权威指南

程序猿经常争论的一个话题是:日常开发到底 Windows 好还是 Linux 好?进而演化出另一个问题:到底选 MacBook 好还是 SurfaceBook ...

47414
来自专栏腾讯移动品质中心TMQ的专栏

iOS 测试利器:idb

对于android的开发以及测试人员,对adb命令一定会很熟悉,adb工具可谓android测试的入门神器,安装、卸载、抓log、截图等等一应俱全。很多自动化以...

1.4K1
来自专栏施炯的IoT开发专栏

Windows Phone SDK 8.0 发布

    在Build大会之后,微软发布了Windows Phone SDK 8.0 ,各位开发者们可以去Microsoft Download Center页面下...

1709
来自专栏FreeBuf

利用Freeipa实现Liunx用户身份、权限的统一管理 | 企业安全拥抱开源

*本文原创作者:agui,本文属FreeBuf原创奖励计划,未经许可禁止转载 在《企业安全拥抱开源之FREEOTP部署实战》一文中(下面简称上文),已经介绍了F...

3867
来自专栏CaiRui

Linux 优化

 一、最小化原则 (1)安装最小化 (2)开机启动服务最小化 (3)操作最小化 (4)权限最小化 (5)配置参数合理,不要最大化 二、端口优化   远程登录的端...

19210
来自专栏Coding01

利用 Valet 开发和调试 PHP 项目

对于开发者来说,为自己投资买一台 Mac,这可是「低投资高回报」,平时在开发 PHP 项目时,常规的做法需要在电脑上安装一系列开发工具,如: XAMP,还需要配...

623
来自专栏听雨堂

用AutoHotKey建立自己的便签本

     如果要我选一个我最常用的windows程序,那一定是notepad了,事实上,我把它的快捷方法放到快速启动栏以便随时打开它。顺手记录各种东西:网址,关...

1858
来自专栏企鹅号快讯

入门干货之用DVG打造你的项目主页-Docfx、Vs、Github

由于这三项技术涉及到的要点以及内容较多,希望大家有空能自己挖掘一下更多更深的用法。 0x01、介绍 VS,即VS2017以及以上版本,宇宙最好的IDE,集成了宇...

1906

扫描关注云+社区