Mój kod C# wywołuje niezarządzaną funkcję biblioteki innej firmy za pośrednictwem P/Invoke, a funkcja niezarządzana wywołuje dziwne efekty uboczne. Chcę debugować i zobaczyć, co robi.Przechodzenie do wywołania P/Invoke w widoku rozmontowania
Jeśli debuguję mój kod C# i spróbuję "Wejść do" wywołania P/Invoke, to zamiast tego przechodzi on dalej. Nic dziwnego - spodziewałem się tego; nie ma źródła dla tej biblioteki DLL, a ja nie powiedziałem, że nie miałem nic przeciwko zobaczeniu widoku demontażu.
Przełączam debugger do widoku demontażu (Debugowanie> Windows> Demontaż). Teraz widzę poszczególne instrukcje x86 w moim kodzie JIT. Ponownie próbuję wejść do wywołania P/Invoke. I znowu, zamiast tego, zamiast tego, krok po kroku przechodzi - mimo że wyraźnie powiedziałem, aby przejść do instrukcji CALL x86. Jak trudno jest wkroczyć do CALL X86?
My Googling dotąd pokazało mi kilka opcji, które mogą mieć wpływ na to, a ja już je ustawić:
- W menu Narzędzia> Opcje> debugowania> ogólne „Włącz Just My CODE” niepowstrzymany.
- W zakładce Projekt> Właściwości> Usuwanie błędów zaznaczono opcję "Włącz debugowanie niezarządzanego kodu".
Nic dobrego. Visual Studio nadal nie chce wkroczyć.
Nie mam PDB dla biblioteki DLL innej firmy, ale to nie powinno mieć znaczenia. Nie dbam o kod źródłowy ani informacje o symbolu. (Cóż, w rzeczywistości byłyby naprawdę fajne, ale już wiem, że ich nie otrzymam.) Visual Studio może przeprowadzić debugowanie x86 (to jest to, co do widoku Disassembly jest dla), a wszystko, co chcę zrobić, to przejdź do kodu x86.
Co jeszcze należy zrobić, aby system VS zezwolił na wykonanie instrukcji x86 w ramach wywołania P/Invoke?
Czy kiedykolwiek to rozgryzłeś? – Dennis
Minęło kilka lat, odkąd próbowałem to zrobić, ale jak pamiętam, nie, nigdy nie udało mi się go uruchomić. –