Perché il comando psscor4 non verrà eseguito

Per qualche ragione, non posso eseguire alcun comando dopo aver caricato psscor4. Ho scaricato x64 di psscor4 dal sito Web di MS e lo metto nella stessa cartella in cui si trova windbg. Prima di caricare psscor4, posso eseguire comandi sos bene senza alcun problema.

0:003> .loadby sos clr 0:003> lmvm clr start end module name 00007ffa`35630000 00007ffa`35fc8000 clr (deferred) Image path: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll Image name: clr.dll Timestamp: Wed Nov 27 19:25:30 2013 (52968D7A) CheckSum: 00996ED8 ImageSize: 00998000 File version: 4.0.30319.34011 Product version: 4.0.30319.34011 File flags: 8 (Mask 3F) Private File OS: 4 Unknown Win32 File type: 2.0 Dll File date: 00000000.00000000 Translations: 0409.04b0 CompanyName: Microsoft Corporation ProductName: Microsoft® .NET Framework InternalName: clr.dll OriginalFilename: clr.dll ProductVersion: 4.0.30319.34011 FileVersion: 4.0.30319.34011 built by: FX45W81RTMGDR PrivateBuild: DDBLD109 FileDescription: Microsoft .NET Runtime Common Language Runtime - WorkStation LegalCopyright: © Microsoft Corporation. All rights reserved. Comments: Flavor=Retail 0:003> !DumpHeap -type ConsoleApplication1.Dummy Address MT Size 0000000002022f58 00007ff9d5ec4130 40 Statistics: MT Count TotalSize Class Name 00007ff9d5ec4130 1 40 ConsoleApplication1.Dummy Total 1 objects 0:003> !DumpHeap -mt 00007ff9d5ec4130 Address MT Size 0000000002022f58 00007ff9d5ec4130 40 Statistics: MT Count TotalSize Class Name 00007ff9d5ec4130 1 40 ConsoleApplication1.Dummy Total 1 objects 0:003> !do 0000000002022f58 Name: ConsoleApplication1.Dummy MethodTable: 00007ff9d5ec4130 EEClass: 00007ff9d5fd23b8 Size: 40(0x28) bytes File: c:\Projects\ConsoleApplication1\ConsoleApplication1\bin\Debug\ConsoleApplication1.exe Fields: MT Field Offset Type VT Attr Value Name 00007ffa34635740 4000001 8 System.Byte[] 0 instance 0000000012029740 bytes 00007ffa34632838 4000002 18 System.Int32 1 instance 0 k__BackingField 00007ffa3464d5b8 4000003 10 System.Double 1 instance 0.000000 k__BackingField 

Una volta caricato psscor4, non posso eseguire alcun comando sos

 0:003> .load psscor4 0:003> !DumpHeap -type ConsoleApplication1.Dummy The garbage collector data structures are not in a valid state for traversal. It is either in the "plan phase," where objects are being moved around, or we are at the initialization or shutdown of the gc heap. Commands related to displaying, finding or traversing objects as well as gc heap segments may not work properly. !dumpheap and !verifyheap may incorrectly complain of heap consistency errors. Error requesting GC Heap data Unable to build snapshot of the garbage collector state 0:003> !DumpHeap -mt 00007ff9d5ec4130 The garbage collector data structures are not in a valid state for traversal. It is either in the "plan phase," where objects are being moved around, or we are at the initialization or shutdown of the gc heap. Commands related to displaying, finding or traversing objects as well as gc heap segments may not work properly. !dumpheap and !verifyheap may incorrectly complain of heap consistency errors. Error requesting GC Heap data Unable to build snapshot of the garbage collector state 0:003> !do 0000000002022f58  Invalid object 

Posso eseguire questi comandi dopo aver aggiunto il prefisso a SOS. Così! Sos.do funziona bene. Ma il problema è che non posso nemmeno eseguire alcun comando specifico per psscor4. Qualche idea di cosa potrebbe essere sbagliato? Penso che l’errore emesso da psscor4 sia fuorviante perché non penso che un GC stia accadendo quando ho collegato windbg a questo processo.

MODIFICA Di seguito è riportata la configurazione utilizzata per .NET 4.0. Quale di questi potrebbe essere usato con psscor4 allora? inserisci la descrizione dell'immagine qui

PSSCOR4

Hai .NET 4.0.30319.34011, che in realtà è .NET 4.5. PSSCOR4 è del 2011-02-01 e non è ancora disponibile per .NET 4.5. Funziona solo con .NET 4.0, quindi è abbastanza inutile per la tua situazione.

Poiché .NET 4.5 è un aggiornamento in -place per .NET 4, l’impostazione del framework di destinazione su 4.0 non aiuta. Dipende dalla versione .NET che è effettivamente installata sul PC che esegue la tua applicazione.

Più estensioni

Alcune estensioni potrebbero avere gli stessi comandi delle altre estensioni. Puoi trovare i comandi disponibili di PSSCOR 4 di

 0:000> .extmatch /e *psscor4* * 

Come puoi vedere dall’elenco, PSSCOR4 è un superset di SOS e ha tutti i comandi di SOS e altri ancora.

Il conflitto di denominazione può essere risolto in due modi:

  1. definendo la DLL predefinita usando .setdll
  2. essere esplicito usando !.

Facendo un !sos.do hai scelto l’approccio 2.

Il dump esegue CLR v4.5 (4.0.30319.34011). Psscor4 non funziona con .NET 4.5+.