windbg命令行捕获子进程并创建断点
最近我不得不用windbg调试一个应用程序,在阅读之后,我找到了两个问题的一些解决方案,但没有一个可以在一次运行中解决所有这些问题 一般来说,我使用-c选项在启动时设置断点,使用-logo选项将日志内容输出到静态文件,使用-pn选项启动我的应用程序,因此最初我的命令如下:windbg命令行捕获子进程并创建断点,windbg,Windbg,最近我不得不用windbg调试一个应用程序,在阅读之后,我找到了两个问题的一些解决方案,但没有一个可以在一次运行中解决所有这些问题 一般来说,我使用-c选项在启动时设置断点,使用-logo选项将日志内容输出到静态文件,使用-pn选项启动我的应用程序,因此最初我的命令如下: windbg -pn myapp.exe -logo "log.txt" -c 'bp WININET!InternetSetCookieExW "r; dv; kb; .dump /mu cookiedbg.dmp; g"'
windbg -pn myapp.exe -logo "log.txt" -c 'bp WININET!InternetSetCookieExW "r; dv; kb; .dump /mu cookiedbg.dmp; g"'
-c 'bp WININET!InternetSetCookieExW "r; dv; kb; .dump /mu cookiedbg.dmp; g"; g'
此命令将启动myapp.exe,在WININET创建断点!InternetSetCookieXwWIN32 API,当命中此断点时,它将信息转储到log.txt,然后继续(通过g命令)
但是,我仍然有一些问题没有解决,下面列出了我的实际需求:
windbg-pn myapp.exe-o
似乎有效>
但不幸的是,当给出一个-o选项时,每当子进程被分叉时,windbg碰到一个断点,我必须手动使用g命令来继续,这不是自动的
为此,我找到了-g选项,该选项将忽略初始断点,但它仍然会引发一个关键问题
问题是,当指定了-g选项时,-c选项提供的命令无法在我的应用程序启动后立即执行,因为初始断点被忽略,我必须手动设置断点,然后我的命令可以在点击时执行
我尝试了-e选项来为休息时间引发一些事件,但没有结果
总之,我使用-o和-g选项使windbg捕获所有子进程,并且在创建进程时不会到达初始断点,但是我无法通过-c选项注入命令
如果有人能帮助您提供命令行选项的正确组合,请多谢。您可以省略-g选项,并向初始命令添加g,如下所示:
windbg -pn myapp.exe -logo "log.txt" -c 'bp WININET!InternetSetCookieExW "r; dv; kb; .dump /mu cookiedbg.dmp; g"'
-c 'bp WININET!InternetSetCookieExW "r; dv; kb; .dump /mu cookiedbg.dmp; g"; g'
因此,在初始断点和命令执行之后,恢复调试对象进程的执行
至少它解决了我的问题如果您事先知道子进程集,那么您可以使用图像文件执行选项工具自动调试它们。这可以代替使用windbg的一个实例调试所有子进程。