目前,我正在执行以下操作来分析内存泄漏:
我想使用VBA从最终的Excel工作表开始自动执行以下操作:
Windbg.exe
)的两个实例,并用它们打开两个转储。Windbg
实例中,启动必要的命令(.load pykd.pykd
,后跟.py heap_stat.py -stat
)。heap_stat.py
脚本完成,然后将结果复制到Excel工作表中。Match()
工作表函数和Excel公式以完成分析。为此,我需要能够:
Shell
命令来完成。Windbg
允许使用分号来连接命令,因此可以跳过。为了执行此操作,我正在考虑上述URL中解释的技巧。我的问题是:是否可以读取输出?我知道可以等待命令完成,以验证结果是否正确或是否有错误,但是我找不到读取该命令抛出的实际输出的方法。
有人知道这是否(轻松)可行吗?
答案 0 :(得分:1)
如果要将pykd用于全自动任务,为什么需要在windbg内运行它? 您可以制作一个独立的python脚本。
答案 1 :(得分:0)
我找到了解决我问题的方法:
我将从Excel VBA中进行如下操作:
Shell "windbg -z ""C:\Directory\Dumpfile.dmp"" -c "".load pykd.pyd;.logopen C:\Directory\output.txt;!py heap_stat.py -stat""", vbMaximizedFocus
Windbg命令的含义如下:
.load pykd.pyd // load PYKD library
.logopen ... // open a logfile, for all Windbg output (thanks, Zac and Tate, for the idea)
!py heap_stat.py -stat // launch the heap_stat script
while
循环,以验证标志文件的存在。