阅读:1786回复:16
WinDBG 调试一问
小弟用windbg和vmware搭建了debug环境,
在debug 我的driver的时候,当我的断点设置到一个routine里, 当走到这个routine里,我发现有些local variable的值的"local"里没有列出来,我用"watch"也不行,更加看不到比如deviceExtension的某个field的当前值,:( 请问大家知道是为什么吗,如何才能看到那些deviceExtension field和local variable的值呢? |
|
沙发#
发布于:2005-02-16 16:26
小弟用windbg和vmware搭建了debug环境, 只有有调试符号的才会被列出,你是否是checked版编译,并且是否已正确加载调试符号 |
|
|
板凳#
发布于:2005-02-16 18:54
对,一方面是这个原因,但另外也可是因为Driver会优化,导致有些局部变量使用寄存器代替了,所以使用local命令并不一定能看到所有本地变量 |
|
|
地板#
发布于:2005-02-16 19:49
用汇编看得了,真不明白你们为什么不喜欢用汇编???
|
|
|
地下室#
发布于:2005-02-16 21:18
哈,兄弟们都已经来啦,我还没开始上班呢,给大家拜个晚年先:)
你们说的调试符号是什么东西? 我发现windbg已经加载了我要调试的driver的.pdb文件,你们说的是不是就是它啊? 调试的时候比若说想通过watch看deviceExtension->XXX 的值, watch窗口会说什么好像access memory error 什么的? 是你们说的调试符号的问题吗?如果是,怎么装它呢? |
|
5楼#
发布于:2005-02-16 22:03
用汇编看得了,真不明白你们为什么不喜欢用汇编??? 老大,汇编不是所有人都会(或者说熟悉)的,但要写好驱动汇编最好能懂(至少看懂)一些。 |
|
|
6楼#
发布于:2005-02-16 22:13
哈,兄弟们都已经来啦,我还没开始上班呢,给大家拜个晚年先:) 看看Windbg帮助的Symbols主题。 |
|
|
7楼#
发布于:2005-02-17 07:08
发现VMWare + Windbg比VMWare + SoftIce好用啊。
好像Virtual SoftIce不能用named pipe作kernel connection. |
|
8楼#
发布于:2005-02-17 12:17
用汇编看得了,真不明白你们为什么不喜欢用汇编??? 我以前是铁杆的汇编迷,但现在的编译器已经相当智能,比单个人优化的好,从以前的堆栈桢传递参数到现在的快速调用,现在我改变了看法,于是有时也伤感,现在很多人可以很轻易地做我们以前费很大力气写的毫无章法的牛仔式的程序,再说现在汇编也高级起来了,除非有特别必要,汇编代码跟C没什么区别,我现在最多用inline汇编,如果编译器不支持某些指令,最多硬编码上两个。 我觉得汇编以后的前途在于类似安腾这样的显式并行,编译器做起来很困难的领域,在串行环境中,廉颇老已了,真是伤感 |
|
|
9楼#
发布于:2005-02-17 21:49
请问有人能回答我的问题吗?
想看到deviceExtentsion->XXX的值光load这个driver的.pdb文件够不够? |
|
10楼#
发布于:2005-02-18 05:53
楼上....
deviceExtension是全局变量么.... 用调试器不会汇编? 写驱动不会汇编? 在我看来实在难以想象.... 不要回复跟我吵架.......哈哈.. |
|
11楼#
发布于:2005-02-18 07:42
用调试器不会汇编? |
|
|
12楼#
发布于:2005-02-18 07:44
用调试器不会汇编? 对确实是不能想象,但如果刚开始使用调试器那就不一定了, 我可不是想给你吵架哦 :D |
|
|
13楼#
发布于:2005-02-18 10:04
廉颇老已,尚能饭否,哈哈,有同感.
所以现在用汇编只能自娱自乐拉,哈哈...... 他人笑我太疯癫,我笑他人看不穿...... |
|
|
14楼#
发布于:2005-02-18 10:04
请问有人能回答我的问题吗? .pdb文件本身就是符号表文件,全名program database。如果你有源程序,很惭愧,我只用softice,在softice的symbol loader中还可以将源代码一块形成nms文件,这样就完全可以看任何东东了,但依你的情况看,似乎你没有源代码。 |
|
|
15楼#
发布于:2005-02-18 22:34
[quote]请问有人能回答我的问题吗? .pdb文件本身就是符号表文件,全名program database。如果你有源程序,很惭愧,我只用softice,在softice的symbol loader中还可以将源代码一块形成nms文件,这样就完全可以看任何东东了,但依你的情况看,似乎你没有源代码。 [/quote] 源代码是我自己写的,所以也有它的.pdb文件. 不过我不明白为什么断点设在有些routine里可以看到一些local的变量而在另一些routine里却不行. 有人用过windbg碰到过类似的问题吗? 如果说有些local值被优化到了register,那么怎么才能看到他们的值呢,我不知道哪个register里存着它的值.是不是可以在编译是不做优化就不会把local variable优化到register里面了? 还有,全局的变量的值怎么看啊? |
|
16楼#
发布于:2005-02-19 10:01
惭愧,windbg不会
|
|
|