dbg
文章平均质量分 61
nickr
.
展开
-
关于调试
这段时间在学习调试的技巧.以前的调试只局限在 vc6 IDE 中的调试. http://www.cnblogs.com/lixiong/ 的 "windows 用户态程序高效排错" 展现了一个全新的调试世界. windbg 的引入. 让这一切成为可能. 大多数的时候, 调试的程序都是没有源代码的. 这也就要求要有汇编功底. 在学校的汇编只玩过 8086 的. 除了一些基本的指令. 基本上是从头原创 2006-11-28 23:20:00 · 1130 阅读 · 0 评论 -
sysinternal 发布新工具 procdump
当一个程序 hang 或者长时间没有响应的时候, 可以自动创建 dump 文件。 check the following link for details. http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx转载 2009-07-30 21:12:00 · 948 阅读 · 0 评论 -
Apply wininet dbg version to an app build with vs2008.
keyword: wininet.dll urlmon.dll debug version iexplore.exe.local Microsoft.VC90.ATL.manifest Microsoft.VC90.CRT.manifest msvcr90.dll atl90.dll 在 side-by-side component 之前, 运用 Dynamic-Link Library原创 2009-07-29 09:48:00 · 951 阅读 · 0 评论 -
查看 wininet 内部的 serverinfo cache
0:030>as dx !list "-t ntdll!_LIST_ENTRY.Flink -e -x /"dpa poi(@$extret)+0n20 l1;dd poi(@$extret)+10 l1/" WININET!GlobalServerInfoList"0:030> dxdpa poi(@$extret)+0n20 l1;dd poi(@$extret)+10 l1 04141d原创 2009-05-23 09:24:00 · 1254 阅读 · 0 评论 -
skip running a func using windbg
.if (not(${/d:$arg1})) { .echo usage: .echo " ${$arg0} func-name [arg-count]" .echo " if arg-count is omitted, 0 is the default value."}.else{ .if (${/d:$arg2}) { bp ${$arg1}原创 2009-08-06 09:56:00 · 998 阅读 · 0 评论 -
ida, ollydbg 使用 PDB. _NT_SYMBOL_PATH
ida 5.2 自带的加载 pdb 的功能有问题. 于是找到了这个:http://msmvps.com/blogs/v_scherbina/archive/2006/12/22/pdbext_5F00_v0_5F00_2.aspx ollydbg 只会在当前目录找 pdb. 这里的帖子上讲了如何修改 ollydbg.exe 来 fix 这个问题:http://www.openrce转载 2009-08-20 10:44:00 · 4900 阅读 · 0 评论 -
kb 参数使用示例
[quoted from http://blogs.msdn.com/ntdebugging/archive/2009/09/02/push-locks-what-are-they.aspx] What does a Pushlock look like? 3: kd> !thread 8c9764c0THREAD 8c9764c0 Cid 2410.1be4 Teb: 7转载 2009-09-07 14:09:00 · 1461 阅读 · 0 评论 -
PDB Files: What Every Developer Must Know
http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspx转载 2009-07-09 11:56:00 · 824 阅读 · 0 评论 -
显示源码相关命令 lsa lsc lsp lsf
首先保证 .srcpath 设置正确lsa address 列出 address 所在的代码块.如果你觉得显示的不够多, 可以用 lsp -a 30 来设置 lsa 命令显示的行数.lsc 列出当前显示的文件名和行号lsf filename 加载特定的源文件, 但此命令不理会 srcpath, 所以你必须指定相对当前目录的路径或者绝对路径. 所以, 这个命令不太实用.原创 2009-11-27 09:25:00 · 1725 阅读 · 0 评论 -
Create dump via taskmgr in XP
You can create a dump file in Taskmgr in Vista. now Im gonna add this feature to Taskmgr in XP. 说一些细节.. makedump.exe 用于创建 dump. 实现很简单. 只是调用了 MiniDumpWriteDump. makedump.exe 可被单独使用. . m原创 2009-07-22 15:54:00 · 823 阅读 · 0 评论 -
windbg 的一个小应用
公司的新机器居然有兼容性问题. 有时候会莫名其妙的重启. 没有蓝屏. 直接黑屏重启. 有些郁闷. 找找原因吧. 看能不能解决. 到 eventvwr 里面看看. 嗯. 有一条 savedump 的记录. 有收获啊. minidump 写到了 c:/windows/minidump 下. 用 windbg 打开这个 crash dump. 如同. 找到肇事者了. Rtenicxp.s原创 2007-07-13 16:52:00 · 1257 阅读 · 0 评论 -
远程调试小结
远程机器必须运行Visual C++ Debug Monitor(Msvcmon.exe,和MSDEV.exe在同一个目录下),为了运行 Msvcmon.exe,远程机器上必须有:Tln0t.dll、Dm.dll、Msvcp60.dll、Msdis100.dll步骤: 在远程机器(比如 192.168.0.2)上运行 msvcmon.exe,选择 Network(TCP/IP), Settin原创 2006-07-25 11:34:00 · 1715 阅读 · 0 评论 -
MSDN 不能使用
很久没有用 MSDN 了, 但终于觉得在线访问 msdn.com 效率太低, 今天决定在本机安装. 照旧使用 LAN 安装的方式, 只需要 100M 的空间, 安装速度快. 安装一切顺利. 然后就是使用的时候发现绝大多数帮助都显示找不到页面. 很郁闷. 在同事的 win2000 上同样的安装, 没有问题. 我用的是 XP. 刚开始怀疑安装有问题. 依稀记得需要先映射一个网络驱动器, 在网络驱动器里原创 2006-12-04 15:53:00 · 2532 阅读 · 0 评论 -
Trace CallStack when App Crashes (程序崩溃时导出调用栈) ---- BugSlayerUtil.dll 的使用
以前写的一个例子, 现在才放上来.. 程序出错时, 调用BugSlayerUtil.dll 中的函数将调用栈(callstack) 写入文件. 用来调试程序, 事半功倍. 首先要做的是让程序带有调试信息. 以 vc6 IDE 为例. 打开项目属性, 切换到所有配置(All Configurations), 然后C/C++属性页下的 General 类, 将 Debug info 改原创 2007-01-15 16:15:00 · 4268 阅读 · 2 评论 -
TimerWnd 类的一个 bug
今天准备修改一下服务器程序关于 socket, 线程这一块的代码. 将 CObjectThread 的一个成员 m_pPCLayer 变成了父类. 发现程序在 TimerWnd 的代码出现问题. 分析发现, TimerWnd 在 PCLayer 和 CCAMThread 中被使用. 代码改完之后, 程序会先创建 PCLayer 的 3 个 TimerWnd 的实例. 之后又创建 CCAMThrea原创 2007-03-08 17:22:00 · 1265 阅读 · 2 评论 -
关于 mutex 的调试实例
今天解决了一个关于 mutex 的 bug.程序每次登录成功就会创建两个线程. sign out 的时候可能会强制 Terminate 这两个线程.当程序出现问题时用 Process Explorer 观察各个线程. 发现其中一个线程一直在等一个对象, 打开 windbg, 查看 WaitForSingleObject() 的参数. 找到了这个对象的句柄 6d0. 在 windbg 中执行:原创 2007-06-29 18:55:00 · 3898 阅读 · 14 评论 -
将 svn 版本修订号写入程序版本信息
tsvn 带有一个命令行程序 subwcrev.exe. 可以对一个指定文件进行一些宏替换, 比如: 将 $WCREV$ 替换成当前版本号. 这个是最有用的. 详细帮助见 http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-subwcrev-keywords.html以 vc6 为例, 文件的版本信息保存在 rc 文件. 编译成原创 2007-04-04 10:30:00 · 7057 阅读 · 2 评论 -
自己创建 minidump
以前曾写过一个 bugslayer.dll 的介绍. 在程序出错时将调用栈写到文件. 觉得不错. 后来开始用 windbg. 知道了 userdump. 知道了如何调试 dump... 才知道程序崩溃的时候写 dump 文件其实可以获取比调用栈多得多的信息. 如果你的程序什么都不干. 那么在程序出错的时候. drwtsn32.exe 会写一个 userdump. 但 drwtsn32 有些缺原创 2007-04-05 15:49:00 · 7413 阅读 · 2 评论 -
check ShowWindow API
在 windows 下调试窗口相关的代码时, 有时候需要检查一个窗口为什么被显示/隐藏. 归根结底显示/隐藏窗口都是通过调用 ShowWindow/SetWindowPos 这两个 API 来实现的. 这里提供的脚本本质上就是在这两个 API 上放断点. trace 出窗口句柄以及参数. 看脚本:.if (not(${/d:$arg1})) { .echo usage: .echo原创 2009-12-10 13:53:00 · 1495 阅读 · 0 评论