我正在调查使用Delphi 2010编写的应用程序的性能问题.Delphi是否会发出Process Explorer在查看当前正在运行的线程时可以使用的符号,以便我可以看到函数名称?
我已经阻止了我的可执行文件的名称,但是你可以看到它只给了我函数的内存地址,如果可能的话我想要解析函数名(就像我对ole32.dll和ntdll一样). dll,因为我正在使用MS符号服务器).
我知道这可以用于VC++应用程序和WinDbg ......可以用Delphi应用程序和Process Explorer完成吗?

我开始学习windbg并找到了这篇好文章 如何使用WinDbg来分析VC++应用程序的崩溃转储?
现在我想按照说明一步一步地做.这是问题所在:我需要编写一些可以立即崩溃的示例代码,并创建一些可以由windbg使用的转储文件.
怎么写这样的代码?
void Example4()
{
int* i = NULL;
*i = 80;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码会立即崩溃; 但是,我不知道在哪里可以找到转储文件?
谢谢
我跟随Tess Ferrandez的博客,在WinDbg中设置自定义主题.
我也开始使用-c".cmdtree c:\ mycmdtree.txt"自动启动WinDbg
这正确地打开我的cmdtree文件作为命令窗口,但我不能让它正确停靠.问题似乎是"命令"窗口只能在打开DMP文件后打开,但打开DMP文件会将您切换出"基础"工作区,因此不会保存对工作区的任何更改.
有任何想法吗?
为了追踪内存泄漏,我一直在使用Visual Studio和SOS.dll来提供对象堆的转储,并查看GCR射击特定对象的原因.
我开始使用AutoIt自动执行此过程来控制我的鼠标和键盘.这是我脚本第一部分的近似值:
在Visual Studio中,按F5开始执行
让程序完全加载
切换到Visual Studio并中断执行将焦点切换到即时窗口
加载SOS.dll
调用!dumpheap -stat
将转储结果复制到剪贴板
粘贴到记事本中并另存为dump1.txt恢复执行
多次执行漏洞操作
切换到Visual Studio并中断执行将焦点切换到即时窗口
清除输出
调用!dumpheap -stat
将转储结果复制到剪贴板
粘贴到记事本中并另存为dump2.txt运行Python脚本,比较两个转储并找到泄漏的对象
不过,我对目前的方法有些担忧.我不仅依赖于Visual Studio的安装,而且在脚本运行时,我不能使用鼠标或键盘而不会使自动化失序.
有没有办法在C#程序而不是Visual Studio中使用SOS.dll?理想情况下,此解决方案将附加到指定的进程并将结果输出!dumpheap -stat到文本文件,而无需自动化Visual Studio.