IL úroveň kódu ladicí

hlasů
23

Je nějaká hladina IL debugger v podobě VS plugin nebo samostatná aplikace?

debugger Visual Studio je skvělý, ale to vám umožní ladit na obou HLL úrovni kódu nebo assembleru, nemůžete ladit IL. Zdá se, že v některých situacích, že by bylo užitečné mít možnost ladit na úrovni IL.

Zejména by to mohlo být užitečné při ladění problém v kódu, který nemáte zdroj.

Je diskutabilní, zda je skutečně užitečné pro ladění IL když nemáte zdroj, ale tak jako tak.

Položena 12/08/2008 v 21:06
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
20

Nejlepší způsob, jak toho dosáhnout, je použít ILDASM demontovat spravované binární, která bude generovat instrukce IL. Překompilovat, že zdrojový kód IL v režimu ladění pomocí ILASM, když oheň ladicí program Visual Studio budete moci krokovat surový IL.

  1. ildasm foo.exe /OUT=foo.exe.il /SOURCE
  2. ilasm foo.exe.il /DEBUG

Napsal jsem blog post o tomto tématu na adrese: Jak ladění kompilátoru generovaného kódu .

Odpovězeno 12/08/2008 v 21:10
zdroj uživatelem

hlasů
1

Zde je soubor BAT, které mohu použít k ladění IL assembleru ve Visual Studiu. Vytvořený soubor .IL.IL obsahuje původní zdrojový kód linky a vaše generované IL assembler linky, ale neukazuje jitted strojového kódu. Pojmenoval jsem soubor ILDEB.BAT dávkového a je použil jako „ILDEB mypgm“. Používám IL assembler direktiva „break“, k vynucení Visual Studio debugger pro zarážku, když hit.

for /f "tokens=1 delims=." %%1 in ("%1") do set NAME_ONLY=%%1
@erase/q %NAME_ONLY%.il.il
@if not exist %NAME_ONLY%.dll goto quit
ildasm /out:%NAME_ONLY%.il.il /source /nobar %NAME_ONLY%.dll
@if not exist %NAME_ONLY%.il.il goto quit
ilasm /dll /debug /out=%NAME_ONLY%.dll %NAME_ONLY%.il.il
@if not exist %NAME_ONLY%.dll goto quit
peverify %NAME_ONLY%.dll
:quit
Odpovězeno 24/04/2015 v 17:37
zdroj uživatelem

hlasů
1

Ladění Companion VS plugin se zdá být přesně to, co jsem hledal, kromě toho, že to nebude vidět knihovny projekt v mé řešení. Teprve když jsem přidal aplikace win konzolu k řešení udělal něco, co se objeví v tomto seznamu projektů.

Problém s dekompilovat / kompilaci přístup pro mě bylo, že kód, který jsem byl ladění nebyl můj kód. Mohl jsem tak jako tak rozložit ji ale myslím, že neexistuje žádný způsob, jak se přihlásit, aby překompilovat sestavu tak, že se nahraje namísto původní.

S konkrétní problém jsem měl se ukázalo, že to stačilo jen ladění to na jazykové úrovni sestavy a získat zásobník volání metody, která byla házet výjimku a parametry, se kterými byla volána metoda.

Odpovězeno 19/08/2008 v 22:26
zdroj uživatelem

hlasů
0

Zde je článek o IL ladění. To říká, že nemůžete dělat to a pak se mluví o způsobech, jak to udělat. Tam je také nějaký info v komentářích o to dělat také.

Odpovězeno 12/08/2008 v 21:38
zdroj uživatelem

hlasů
0

ISTR tu debugger plug-in pro reflektor.

Nepoužívá to sám, když jsem použil TestDriven.net ladit sestavu třetí strany s pomocí Reflektor:

weblogs.asp.net/nunitaddin

Odpovězeno 12/08/2008 v 21:24
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more