约有 1,303 项符合查询结果, 以下是第 100 - 131项。
费时 < 1 秒。
Q1,即下面这四个:
0008 00000000 ffffffff Code RE Ac 0 Bg Pg P Nl 00000c9b0010 00000000 ffffffff Data RW Ac 0 Bg Pg P Nl 00000c930018 00000000 ffffffff Code RE Ac 3 Bg Pg P Nl 00000cfb0020 00000000 ffffffff Data RW Ac 3 Bg Pg P Nl 00000cf3
Q2,WinDBG中可以使用!cpuinfo命令获取CPU信息,不可以直接执行cpuid指令。kd> !cpuinfoCP F/M/S ...
Posted in WinDbg
by
格蠹老雷
on 2009-03-24
在使用ba和bp设置断点时通过/p开关指定进程:
/p EProcess
(Kernel-mode only) Specifies a process that is associated with this breakpoint. EProcess should be the actual address of the EPROCESS structure, not the PID. The breakpoint is triggered only if it is encountered in the context of this process.
Posted in Windows内核调试
by
格蠹老雷
on 2009-03-23
简单来说,这个问题主要是编译器和调试符号的问题,不是WinDBG的问题。以VC8(VS2005)为例,使用默认选项构建出的发布版本,在IDE下和WinDBG都可以正确的显示局部变量(参见下图)。
对于VC6,默认的发布版本配置,不会产生符号文件,手工配置后,可以产生,也可以使用,但是在某些函数位置显示局部变量时,的确有错误,但是这样的错误,无论是用VC6自己调试,还是使用WinDBG都会出现。
注意上面的显示中,参数和变量显示完全错位了,0x2510c2应该是hWnd的值。但VC6自己也有这样的问题:
其实,其中的原理和导致问题的原因也很简单,使用SymView工具看一下,便很清楚。
VC6编译时,使用了FPO,而FPO一向是阻碍调试功能的“绊脚石”。
而,VC8没 ...
Posted in WinDbg
by
格蠹老雷
on 2009-03-23
你这么描述后,便可以知道其中的原委了。无论是你的内存填充命令还是eb命令,都把WRITE_PORT_UCHAR函数“废掉了”,而这个函数对于系统和内核调试来说都是离不开的,调试引擎也需要它来发送数据给调试器。你的命令送给调试引擎后,便执行了,执行了后,通信的通道便断了,所以调试器收不到数据就一直BUSY了。这好比是把电闸拉了后,灯自然就不亮了。
下面是内核调试引擎的WRITE_PORT_UCHAR函数的反汇编,可以看到,它调用的就是HAL中的WRITE_PORT_UCHAR:
kd> u kdcom!WRITE_PORT_UCHAR
kdcom!WRITE_PORT_UCHAR:
f9f4ccf2 ff2504c3f4f9 jmp dword ptr ...
Posted in Windows内核调试
by
格蠹老雷
on 2009-03-23
每种ID都是相对一定范围的,CPUID是个很泛泛的讲法,如果要判断CPU的生产厂家,那是有很通用的方法的,如果要找前面提到的PSN,那么几乎不可能了,楼主要找的是到底是哪种ID,派何用途?
Posted in WinDbg
by
格蠹老雷
on 2009-03-23
这样的问题让人摸不着头脑。麻烦楼主,能把问题写的清楚些么?改成了什么样?
Posted in Windows内核调试
by
格蠹老雷
on 2009-03-22
参见Coding提到那篇文档中的说明:
Processor serial number (PSN) is available in Pentium III processor only. The value in this register is reserved in the Pentium 4 processor or later. On all models, use the PSN flag (returned using CPUID) to check for PSN support before accessing the ...
Posted in WinDbg
by
格蠹老雷
on 2009-03-22
简单来说,是同一套源代码根据编译选项的不同而编译出四个可执行文件,分别用于:
ntoskrnl - 单处理器,不支持PAE
ntkrnlpa - 单处理器,支持PAE
ntkrnlmp - 多处理器,不支持PAE
ntkrpamp - 多处理器,支持PAE
在Vista之前,安装程序会在安装时根据系统的配置选择两个多处理器或者两个单处理器的版本复制到目标系统中。从Vista开始,会统一使用多处理器版本,因为多处理器版本运行在单处理器上只是效率稍微低一些。(如果有《软件调试》,可以读一下8.4节P185)
Posted in Windows内核调试
by
格蠹老雷
on 2009-03-16
这个题目好难,也很大,关系到了很多人,很多个家庭,不知道两会上是否有代表提出来讨论:-) 首先,“习惯性加班”绝对不好,不论对公司,还是个人。但是对于软件这一行来说,加班的确又难以避免,因为不论是老板,还是程序员自己,都总是低估“软件”的难度,排计划时过于乐观(有人说把程序员估计的时间延长一倍可能还风险很大),到时完不成,只好加班。积极呼吁,大家共同努力来减少加班。在整个局面扭转之前,建议先从个人做起: 1)未雨绸缪,在项目还没有进入紧张的发布阶段前就把做好设计、编码每道工序,把调试设施做好,这样测试出来问题,也能及时找到原因,很快解决,减少加班的机会。当然,光自己做好了,可能有时还得因为难兄难弟而一起加班,这样的加班至少能轻松些。 ...
Posted in 软件物语
by
格蠹老雷
on 2009-03-14
使用dg命令就可以观察GDT表的各个表项,每个表项是按字段显示的,很友好,例如:
0:000> dg 8 0x40 P Si Gr Pr LoSel Base ...
Posted in WinDbg
by
格蠹老雷
on 2009-03-14