如何控制多进程调试

时间:2017-10-06 09:05:25

标签: adobe windbg

我正在使用WinDbg分析AcroRd32.exeAcroRd32.exe有2个进程,一个(father-p)启动另一个进程(child-p)。我使用.childdbg 1|1s等命令来调试这两个进程。

我切换到child-p,然后切换回father-p,使用条件断点监视kernel32.dll的CreateFileWReadFile API。在打开a.pdf时,仅使用参数“C:\ a.pdf”调用CreateFileW。我记得CreateFileW的返回值,即文件句柄,使用条件断点来监视ReadFile的参数,但是没有调用ReadFile,返回值为{{1 }}。然后使用许多CreateFileW命令,令人困惑的事情,g打开了!

我很困惑。如果不打电话给a.pdf,PDF就会打开。 Acrobat Reader是如何做到的?我有两个假设,第一个,它使用一些像ReadFile API;另一个(大多数情况下),孩子-P成功。

让我们讨论第二个假设。当我调试father-p时,child-p没有挂起。它是如何打开(读取)文件的?

1 个答案:

答案 0 :(得分:1)

使用Rohitab API Monitor我看到第二个实例使用文件句柄调用total results以及CreateFileW()

Screenshot of Rohitab API Monitor

既然如此,还必须能够在WinDbg中找出与断点相同的内容。如果没有确切的步骤来重现问题,我们就无法回答错误,例如:在你的断点条件下。

当我查看演练时,我认为以下内容可能出错:

  • 您在子进程的条件中使用父进程的文件句柄,尽管子进程获得了新句柄
  • 您在错误的进程中设置断点。断点是特定于流程的。
  • 断点条件下的其他错误。检查ReadFile().if命令。

这是我的演练,它显示了断点被击中。我这里没有使用条件断点。

j