在调试windows转储时,我经常使用cdb脚本。这样的脚本加载转储,完成所有必要的准备工作(比如设置符号和加载sosex),然后:
例如:
...
.imgscan /l
.load e:\utils\sosex\64\sosex.dll
!lhi
.logopen "D:\tmp\dumpheap-stat.txt"
!dumpheap -stat
.logclose现在使用linux转储,我想遵循相同的方法,即-编写脚本并将结果转储到文件中。有可能吗?
发布于 2022-04-11 13:36:01
我使用这些命令运行dotnet-dump analyze的预定义命令,并将输出保存到文本文件中:
/tools/dotnet-dump collect -p 1 --type Full -o $dumpfile
/tools/dotnet-dump analyze $dumpfile < /tools/dumpcommands > $dumpfile.txt将所需的命令放入dumpcommands文件中,每行一个sos命令。最后一个应该是exit
clrstack -all
clrthreads
syncblk
dumpheap -stat
exit忽略绝对路径。我必须在码头集装箱内运行
发布于 2022-04-11 17:06:43
我对dotnet dump analyze有一个问题--由于某种原因,gcroot不能工作--它只是永远挂在我们的10 it转储上。
然而,我看到苔丝·费兰德斯正在使用lldb,我尝试了一下,它非常好。这是我的工作:
dotnet symbol --host-only TheCoreDumpFilePath最后一个命令下载相关的dotnet可执行文件。接下来,我们可以调试:
lldb -c TheCoreDumpFilePath dotnet现在,lldb可以从文件或命令行中运行命令。这使我们有能力编写它。现在我明白了,dotnet dump analyze也可以编写脚本,如相应的答案所示。
我希望我们可以利用lldb Python,尽管目前我还不知道如何像我的另一个调用自定义命令,所以在这里提出疑问- 如何通过lldb python运行sos扩展命令?。
https://stackoverflow.com/questions/71803641
复制相似问题