我记得看过Mark Russinovich的网络直播,显示用户启动的内核转储的键盘键序列.有人可以根据键的确切顺序刷新我的记忆.
请注意这是XP.
Start ProfilingSCM门户中有一个很好的按钮,非常适合CPU.
然后有一些来源引用一个Download GC Dump按钮:https:
//stackoverflow.com/a/27987593/647845
但这似乎不再可用了.
然后是Download memory dump按钮.但是现在我无法弄清楚如何/我是否可以看到我也使用的Type/Refcount/Size stastistics.
在C#Azure Web App中查找内存泄漏的推荐方法是什么?
如果您在Outlook Web Access中点击" 自定义错误模块无法识别此错误 ",并且您在Firefox中; 然后你的会议可能刚刚超时!你刚写了一封大邮!如果你回去,所有表格字段将是BLANK!
而不是试图转储postdata,在https上使用wireshark,或者其他任何荒谬的事情:在Firefox中打开一个新的选项卡或窗口,然后在新的选项卡/窗口中转到并重新登录到您的OWA站点.回到失败的提交标签/窗口,右键单击邮件正文区域 - >此框架... - >重新加载此框架 - >重新提交表单!您的电子邮件将成功发送.
如果这个技巧不适合你,那么我建议你回顾一下Lazarus(Firefox插件); 记得使用文本编辑器保存电子邮件信件; 或者至少使用"Ctrl + C"并在提交之前复制邮件正文.希望这有助于任何查看Google结果的人都想知道如何收回他们的信息.
现在,我的问题是:在同样的情况下你还能做些什么呢? 珍贵的表单数据在内存中,您正在使用的https Web应用程序[或至少是会话]现在已经消失,并且大量未保存的工作在余额中挂起.
假设这是在win32上,你能做些什么来取回它?
你可以以某种方式记忆转储吗?配置代理并打印流?可以在不关闭或重新启动流程的情况下访问Firefox的会话数据吗?请问一些想法?
outlook memory-dump web-applications postdata session-timeout
我想解析完整的崩溃转储(*.dmp)文件并获取专用字节数据.我知道SysInternals的VMMap可以告诉我我的私有字节,堆等是多少,但我需要的是如果我有转储,我应该能够解析它并获得Heap(托管堆)结构和数据堆.通过阅读PEB然后走过堆,我已经完成了这项工作.
我无法弄清楚的是如何读取私有字节(除了Heap,它应该是本机代码的进程数据).任何人都可以指出我正确的方向,以便我能够从崩溃转储中解析除堆之外的专用字节.
谢谢.
我有一个完整的内存转储,但在这个例子中我没有用户堆栈跟踪数据库,我有最新的符号和原始二进制文件与转储一起,通常,我已经能够使用在!heap -p -a address分配时查看调用堆栈但如果没有用户堆栈跟踪数据库,这将无法工作.
我的问题是,是否有另一种方法(虽然不那么直接的方法)来获得这种内存泄漏的来源.
LFH Key : 0x0000005c2dc22701
Termination on corruption : ENABLED
Heap Flags Reserv Commit Virt Free List UCR Virt Lock Fast
(k) (k) (k) (k) length blocks cont. heap
-------------------------------------------------------------------------------------
00000000002e0000 00000002 3125248 3122792 3125248 282 378 197 0 7 LFH
0000000000010000 00008000 64 4 64 1 1 1 0 0
0000000000530000 00001002 1088 416 1088 51 10 2 0 0 LFH
0000000000490000 00001002 512 284 512 5 5 1 0 0 LFH
0000000000af0000 …Run Code Online (Sandbox Code Playgroud) 我尝试将转储从Android设备监视器转换为Eclipse内存分析器格式.我用下一个命令
hprof-conv dump.hprof converted-dump.hprof
Run Code Online (Sandbox Code Playgroud)
我得到错误
hprof-conv: command not found
Run Code Online (Sandbox Code Playgroud)
我在一个/platform-tools文件夹中这样做.当我在另一台计算机上运行相同的命令时,一切正常.问题是什么?
我正在分析一个创建的.dmp文件,我有一个调用堆栈,它给了我很多信息.但我想双击调用堆栈,让它带我到源代码.
我可以右键单击调用堆栈并选择符号设置..我可以将位置放到PDB中.但是源代码目录没有选项.
我处理大型应用程序,并经常使用WinDbg根据客户的DMP文件诊断问题.我已经为WinDbg编写了一些小扩展,这些扩展已被证明对于从DMP文件中提取信息非常有用.在我的扩展代码中,我发现自己一遍又一遍地手动取消引用c ++类对象.例如:
Address = GetExpression("somemodule!somesymbol");
ReadMemory(Address, &addressOfPtr, sizeof(addressOfPtr), &cb);
// get the actual address
ReadMemory(addressOfObj, &addressOfObj, sizeof(addressOfObj), &cb);
ULONG offset;
ULONG addressOfField;
GetFieldOffset("somemodule!somesymbolclass", "somefield", &offset);
ReadMemory(addressOfObj+offset, &addressOfField, sizeof(addressOfField), &cb);
Run Code Online (Sandbox Code Playgroud)
这很好,但是由于我已经编写了更多扩展,具有更强大的功能(以及在我们的应用程序DMP文件中访问更复杂的对象),我渴望得到更好的解决方案.我当然可以访问我们自己的应用程序的源代码,所以我认为应该有一种方法可以从DMP文件中复制一个对象并使用该内存在调试器扩展中创建一个我可以调用函数的实际对象(通过我们的应用程序中的dll链接).这样可以省去手动拉出DMP的麻烦.
这甚至可能吗?我尝试了一些显而易见的事情,比如在扩展中创建一个新对象,然后直接从DMP文件用一个大的ReadMemory覆盖它.这似乎把数据放在了正确的字段中,但当我试图调用函数时吓坏了.我想我错过了一些东西...也许c ++拉出一些我不知道的vtable funky-ness?我的代码看起来类似于:
SomeClass* thisClass = SomeClass::New();
ReadMemory(addressOfObj, &(*thisClass), sizeof(*thisClass), &cb);
Run Code Online (Sandbox Code Playgroud)
关注:看起来像EngExtCpp的POSSIBLY ExtRemoteTyped是我想要的吗?有没有人成功使用过这个?我需要谷歌一些示例代码,但没有太多运气.
关注2:我正在对此进行两种不同的调查.
1)我正在研究ExtRemoteTyped,但看起来这个类实际上只是ReadMemory/GetFieldOffset调用的帮助器.是的,它有助于加速ALOT,但在从DMP文件重新创建对象时并没有真正帮助.虽然文档很小,但我可能会误解一些东西.2)我也在尝试使用ReadMemory用来自DMP文件的数据覆盖在我的扩展中创建的对象.但是,我没有像上面那样使用sizeof(*thisClass),而是认为我只会选择数据元素,并保持vtable不变.
在IIS 6中,我们曾经使用两个第三方组件进行Url Rewriting:Helicon(用于处理无扩展网址)和UrlRewriting.net.前段时间我们迁移到IIS 7 - 经典模式,仍然使用这两个组件.
现在我们尝试使用本机.Net路由切换到没有第三方组件的集成模式.路由工作正常,但我们的Web应用程序表现完全不同.我们的网络服务器曾经保持低于10%的CPU使用率,但现在很容易使用50%甚至更高.
我们已经开始分析内存转储,但似乎没有找到问题的根源.似乎.Net缓存机制正在阻止垃圾收集器?这与使用"集成模式"有什么关系?
您可以在下面找到我们分析的摘录.任何关于下一步的建议都将不胜感激.
> !analyze -v -hang
*****************************
*
* Exception Analysis
*
*****************************
GetPageUrlData failed, server returned HTTP status 404
URL requested: http://watson.microsoft.com/00000000.htm?Retriage=1
FAULTING_IP:
+aceb6a0
00000000`00000000 ?? ???
EXCEPTION_RECORD: ffffffffffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 0000000000000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0
FAULTING_THREAD: 0000000000000022
BUGCHECK_STR: HANG
PROCESS_NAME: w3wp.exe
ERROR_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>
EXCEPTION_CODE: (NTSTATUS) 0xcfffffff - <Unable to get error code text>
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG: …Run Code Online (Sandbox Code Playgroud) asp.net performance iis-7 memory-dump integrated-pipeline-mode
我的程序遇到严重问题,只能在客户所在地进行复制.放入日志,没有帮助,因为我怀疑第三方DLL发生了故障.出于某些原因,我无法从图书馆提供商处获得帮助.我正在考虑在失败时生成转储,以便离线分析它.这是推荐的做法吗?还是其他选择?
memory-dump ×10
memory-leaks ×3
windbg ×3
c++ ×2
debugging ×2
android ×1
asp.net ×1
azure ×1
crash-dumps ×1
iis-7 ×1
kernel ×1
minidump ×1
object ×1
outlook ×1
performance ×1
postdata ×1
windows ×1
windows-xp ×1