我可以自动将Windbg附加到进程并设置断点吗?

时间:2014-10-15 14:04:48

标签: windbg

我正在调试一个Windows进程,如果执行停止甚至几毫秒就会崩溃。 (我不知道究竟有多少,但它肯定少于我的反应恢复过程所花费的时间。)

我知道我可以通过输入windbg -p PID启动GUI来通过命令提示启动windbg会话。但是我可以通过命令提示符进一步传递windbg命令,例如bm *foo!bar* ".frame;gc";g"

因为如果我可以将这些命令传递给它,我可以将它们写在.bat文件中并运行它。由于输入(甚至复制粘贴)命令,至少没有延迟。

1 个答案:

答案 0 :(得分:5)

使用-c参数传递它们:

windbg -p PID -c "bm *foo!bar* .frame;gc;g"

根据帮助(通过运行windbg /?找到):

  

-c“command”

     

指定在启动时运行的初始调试器命令。必须将此命令括在引号中。可以用分号分隔多个命令。 (如果你有一个很长的命令列表,可能更容易将它们放在一个脚本中然后使用-c选项与$&lt ;, $><,$><,$$>< (运行脚本文件)命令。)

     

如果要启动调试客户端,则此命令必须用于调试服务器。不允许使用特定于客户端的命令,例如.lsrcpath。

您可能需要使用引号...

编辑:基于this answer,您可能最好将命令放入脚本文件中以处理引号:

script.txt(我认为这就是你想要的):

bm *foo!bar* ".frame;gc"
g

然后在您的批处理文件中:

windbg -p PID -c "$<full_path_to_script_txt"