我正在调试一个Windows进程,如果执行停止甚至几毫秒就会崩溃。 (我不知道究竟有多少,但它肯定少于我的反应恢复过程所花费的时间。)
我知道我可以通过输入windbg -p PID
启动GUI来通过命令提示启动windbg会话。但是我可以通过命令提示符进一步传递windbg命令,例如bm *foo!bar* ".frame;gc";g"
。
因为如果我可以将这些命令传递给它,我可以将它们写在.bat
文件中并运行它。由于输入(甚至复制粘贴)命令,至少没有延迟。
答案 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"