阅读:1259回复:6
两个酷问题
1,有什么工具可以看到系统中的handle情况?最好能列出是哪个进程创建的handle。
2,在Win32程序里,怎样判断硬盘是否转动?也就是怎样判断是否系统在对硬盘进行IO操作?注意,是Win32程序,不用驱动。 Thank you advance. Best regards. |
|
|
沙发#
发布于:2002-04-11 10:51
对你的两个问题我都没经验,但我前两天看见过一篇文章,可能能解决你的第一个问题,我自己对他理解也不深,提错了别见怪。
用Soft-ICE实现源码级调试 -------------------------------------------------------------------------------- 在 Windows 编程中,Soft-ICE 是一件必不可少的调试工具,但 Windows 程序的编程中有很多的时候是和数据结构和 API 打交道,经过编译以后,原来的 mov stRect.left,eax 之类的代码也就变成了 mov [xxxx],eax,invoke UpdateWindow,hWnd 之类的语句也就变成了 push [xxxx]/call [xxxxx] 之类的语句,如果你不记的源程序了,你就根本无法知道你在向什么数据写或者调用什么 API,在 C++ 编程的时候,我们都可以进行源代码级别的跟踪调试,但在汇编中,这可能吗? 答案是可以的,用 Soft-ICE 就可以实现,本文讨论使用 Masm 的情况下用 Soft-ICE 实现源码调试,具体的实现如下: 首先,在编译的时候要生成带符号信息的 Object 文件,这需要打开 ML 程序的两个选项 ML /coff /Zi ... /coff 告诉编译器产生符号调试格式的 Object 文件。 /Zi 使 Object 文件中包括符号调试信息。 然后也要设置 Link 文件,因为 Soft-ICE 使用 CodeView 格式的调试信息,所以 Link 也要包括下面的选项 Link /DEBUG /DEBUGTYPE:CV ... /DEBUG 选项告诉 Link 在 exe 文件中包含调试信息。 /DEBUGTYPE:CV 当然是调试信息要用 CodeView 格式啦。 最后,就是如何使用 Soft-ICE 了,如果要使用符号调试功能,你不能再用 Loader32.exe 程序来装入 exe 文件,而是必须用符号转换程序 nmsym,使用方法是在命令行中打入 nmsym /translate:source,package,always /source:. /load:execute,break 你的exe文件,你可以把它编写成一个 bat 文件如下 nmsym /translate:source,package,always /source:. /load:execute,break %1,假定文件名为 debug.bat ,然后你就可以用 debug xxx.exe 来享受源代码调试的乐趣了。 别的一些必要的设置:你必须把 Soft-ICE 的目录和 Masm 的 bin 目录设置到 path 中,因为这些路径中还有些文件要用到。 -------------------------------------------------------------------------------- |
|
|
板凳#
发布于:2002-04-11 11:10
老兄,我的问题和调试没什么太大关系啊。
比如Filemon可以看到有哪些文件正在被操作,有无一个类似工具可以看到那些handle正在被使用? 而且,我只用TASM,不用MASM 不过还是感谢你的帮助。 |
|
|
地板#
发布于:2002-04-13 12:36
有一个叫Diskmon的软件似乎可以解决你的第二个问题吧。在http://www.sysinternals.com上可以下载。
|
|
|
地下室#
发布于:2002-04-13 12:51
see 进程创建的handle tools
|
|
|
5楼#
发布于:2002-04-13 12:52
判断是否系统在对硬盘进行IO操作 tools
|
|
|
6楼#
发布于:2002-04-13 14:07
faint!
这次分比较少,以后有机会多给大家 那两个妙东东的源代码呢?我先去internal看看去,大家有给我放上来。关于硬盘转动,我想自己程序监视,不想用工具。还有那个handles,最好也有代码。 Thanks a lot! |
|
|