posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

Test sul post di Paolo "StackTrace, Assembly e .NET"

Incuriosito da questo post di Paolo segnalatomi da Cristian, non ho resistito a fare qualche test.

Il problema l'ho potuto riscontrare anch'io e quindi ho cominciato a debuggare in assembler per vedere se c'erano differenze macroscopiche.
Per poter debuggare una versione release c'è il solito trucco di iniettare l'istruzione int 3 in assembler e così ho fatto con una micro dll di appoggio in C++. Immediatamente ho potuto riscontrare che il problema non si presentava più e sistematicamente ogni volta che tentavo di iniettare il codice il problema spariva.

Quindi mi è venuto il dubbio potesse essere un problema di passaggio parametri e quindi presunta 'colpa' del jitter.

Ecco quindi l'ovvio test successivo:

System.Type t = method.DeclaringType;
Assembly a = t.Assembly;
return(a);
// return(method.DeclaringType.Assembly);

Ecco quindi che spezzando in tre righe la return il problema sparisce. Ho anche provato ad inserire una Sleep o a iniettare dei nop assembler e tutte queste modifiche riportano sempre il risultato corretto.
La palla ripassa a Paolo :-) per capire se anche a lui sortisce lo stesso effetto.

Uno dei possibili passi successivi è quello di confrontare l'assembler corrispondente dalla versione originale e quello con la versione qui citata e confrontare il passaggio parametri, ma non si può iniettare codice assembler ed è già quasi l'una ;-)

Print | posted on sabato 11 dicembre 2004 02:58 | Filed Under [ .NET [Italiano] ]

Feedback

Gravatar

# re: Test sul post di Paolo "StackTrace, Assembly e .NET"

Funziona anche solo togliendo le ottimizzazioni di compilazione dalla versione Release. Il tuo sospetto è molto fondato...
12/12/2004 02:24 | Marco Russo
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET