[C++/CLI] debugowanie niezarządzanego kodu (asm)

0

Piszę w CLI i dołączam bibliotekę z niezarządzanym kodem, konkretnie jest to drugi projekt w tej samej solucji, kompilowany do dll, kod w asm, kompilowane masmem.
Problem jest tego typu: nie mogę debugować kodu z masma. Breakpointy robią się puste (tylko obwódka z żółtym trójkątem ostrzegawczym u dołu) z informacją, że nie zostały załadowane symbole i breakpointy nie będą brane pod uwagę.
Jest to sytuacja mocno nie na rękę, bo kod debugować trzeba.
Naczytałem się, że trzeba włączyć Enable to debug unmanaged code w zakłądce debug. Podejrzewam, zę odnosi się to do starego visuala, bo zakładki w propertiesach u mnie brak, jest zakładka debugging, w linker options czy w ogóle opcjach visuala nie doszukałem się niczego takiego.

Ktoś mi wyjaśni, jak mogę debugować niezarządzany kod w projekcie z cli? co zrobić, żeby breakpointy zaczęły działąć?

0

Zaraz, zaraz, a dlaczego oczekujesz, że będzie ci się debugować kod kompilowany masmem? Kod niezarządzany oczywiście się debuguje, nawet domyślnie.

0

Zakładam, żę jest to w jakiś sposób wykonalne, bo działa bez większych problemów w przypadku projektu C++/asm. Skoro działa teć CLI/unmanaged C++, to zakłądałem, ze CLI/asm też musi jakoś działać

0

Dobra, zapomniałem, że masm jest dołączony z Visual Studio, zaraz spróbuję napisać jakiś testowy projekt i sprawdzić jak będzie to działać u mnie.

0

Spróbuj w ustawieniach debuggera (Tools -> Options -> Debugger) zaznaczyć "Show dissassembly if source is not available" i odznacz "Enable Just My Code". W zakładce Just-In-Time upewnij się, że zaznaczone jest Native.

0

Show dissassembly było zaznaczone, tak samo Native w zakładce JustInTime. Odznaczenie Enable Just My Code nie zmienia niczego.

Próbowałem porównywać ustawienia projektu asm w CLI, z ustawieniami projektu asm w C++, a potem same ustawienia CLI i C++, wszystko raczej w miarę tak samo (poza drobnostkami, typu tam ustawiona konsola, a w CLI okna), w c++ da się debugować, w CLI nie.

Zgodziłbym się nawet w ostateczności na wersję, że piszę kod w drugiej solucji i kompiluję, chociaż to niewygodne, takie przeklejanie kodu, ale sprawia to, że ciężko debugować dla jakichś danych w trakcie działania programu, tojedno, a drugie, to z niewiadomych przyczyn kod, który działa bezbłędnie w C++, po uruchomieniu w CLI generuje błąd:

An unhandled exception of type 'System.ExecutionEngineException' occurred in Unknown Module.

Dziwi to, bo kod jest kompletnie przeklejony z działającej wersji, no i bez możliwości zdebugowania gdzie się krzaczy nie wymyślę nic... ciężko jest no

0

To spróbuj może jeszcze zmienić przełącznik kompilatora z /clr:pure na któryś z pozostałych (np. safe).

0

Heh, zmiana na zwykłe /clr pomogła. pure nie pozwalało na debugowanie, a safe w ogóle nie pozwalało na dołączanie kodu z dllki (LINKer error w każdym razie). Ale na zwykłym CLR działa debugowanie, mogę wstawiać breakpointy.

Dzięki wielkie, sam nie wiedziałem już, czego szukać, gdzie klikać, a łączenie managed z unmanaged to dla mnie zupełna już nowość.

1 użytkowników online, w tym zalogowanych: 0, gości: 1