2013-05-07 24 views
16

x86 işlemimiz için bir x64 makinede oluşturulan askıda döküm dosyasını araştırmak için windbg kullanmaya çalışıyorum.SOS, geçerli hedef mimariyi desteklemiyor

.loadby sos clr 
.load wow64exts 
!sw 
kL 

Ancak, her şey burada başlığında hata alıyorum !clrstack aracılığıyla yönetilen yığını elde etmeye çalışmak: Bu sadece yönetilmeyen bir yığın almak çok, şu yapmak zorunda, bir 4,0 x 86 uygulamadır. Neyi kaçırıyorum?

+0

WinDbg bir Windows 8 makinesinde mi çalışıyorsunuz? Aynı hata mesajını sadece bir Windows 8 makinesinde alıyorum. Eğer bir dosyaya bellek döktüyorsam, eğer ben yaparsam bile SOS'u çalıştıramıyorum! Wow64exts.sw 32-bit moduna geçmek için. İşlemi eklediğimde SOS'u çalıştırabilirim ... –

cevap

22

32 bitlik bir dökümü almak için C: \ Windows \ SysWOW64 \ taskmgr.exe dosyasında bulunan 32 bitlik görev yöneticisini kullanmanız gerektiğine inanıyorum.

burada

diğer bilgiler : Hep BITNESS eşleştirme önerisi takip ama bu yazıda rastladım kadar neden tam bilmiyordum ettik http://blogs.msdn.com/b/tess/archive/2010/09/29/capturing-memory-dumps-for-32-bit-processes-on-an-x64-machine.aspx

+0

Geçerli dökümün kullanılmasının bir yolu yok mu? –

+0

Yukarıdaki linkte bir yorum var! Wow64exts.sw,! Clrstack gibi yığınla ilgili komutları çalıştırmanıza izin verebilir.Bunun yerine kendimi denemedim, çünkü yeni bir çöplük aldım. – trydis

+0

Bunu bir günlüğüne açık bırakacağım, kimsenin doa olduğum bir cevabı olup olmadığını görmek için, aksi halde bunu kabul edeceğim –

5

: http://blogs.msdn.com/b/dotnet/archive/2013/05/01/net-crash-dump-and-live-process-inspection.aspx devletler:

"DAC vardır standartlaştırılmış bir arabirim ve hata ayıklayıcı tarafından için bu soyutlamaların durumu hakkında bilgi edinin, örneğin, yönetilen yığın. CLR sürümüyle ve işlemin veya kilitlenme dökümü mimarisiyle eşleşen DAC'yi kullanmak çok önemlidir. sen incelemek istiyorum. "

VE

"DAC yerel bir DLL ve ClrMD kullandığı programa yüklenecek gerektiğini unutmayın. Dökümü veya canlı süreç 32 bit ise şunları yapmanız gerekir kullanımı DAC'ın 32-bit sürümü, denetim programınızın da 32-bit olması gerektiği anlamına gelir.Aynı 64-bit süreçler için de geçerlidir.Programınızın platformunun sizin için uygun olan ile uyumlu olduğundan emin olun. hata ayıklanıyor. "

2

Benim için çalışan bir seçenek daha var: - 64 bitlik bir işlemin çökmesi vardı. - Yani, ilk olarak, dökümün alındığı makineden (C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319) SOS.dll ve mscordacwks.dll dosyasına ihtiyacım vardı. ! - iki msdn makaleleri (http://msdn.microsoft.com/en-gb/library/windows/hardware/ff562263%28v=vs.85%29.aspx, http://msdn.microsoft.com/en-gb/library/windows/hardware/ff540665%28v=vs.85%29.aspx) dayanarak, CLR bu şekilde yüklenen: Bundan sonra

.cordll -u -ve -I clr -lp <path to SOS.dll & mscordacwks.dll> 

, ipler çalıştı. Sanırım, 32-bit çarpma çöplükleri için de geçerli.

8

Diğerleri de söyledikleri gibi, bu, 64 bitlik bir uygulamadan (örneğin, varsayılan Görev Yöneticisi gibi) bir 32 bit işlemin döküm dosyası oluşturmasından kaynaklanabilir.

poizan42 on GitHub'dan soswow64 WinDbg uzantısını kullanarak sorunu çözebiliyordum. Sorunla ilgili daha ayrıntılı bilgi sağlayan this blog entry aracılığıyla buldum.

+0

Bu sorunun cevabının iyi olduğuna eminim, ama ben biraz yanlı olabilir;) – poizan42

+0

@ poizan42 Soswow64 için çok teşekkürler, işimi bu kadar kolaylaştırdı! –