Existuje nějaký způsob, jak ladit, co se děje po mém .NET kód volá funkci v Nespravovaná DLL přes DllImport?

hlasů
4

Existuje nějaký způsob, jak ladit, co se děje po mém .NET kód volá funkci v Nespravovaná DLL přes DllImport?

I vystavit funkce dll uvnitř nespravovaným přes DllImport. Když jsem volání funkce, když jsem krokovat kód, něco se stane a to nikdy nevrací.

Je tam něco, co můžu udělat, možná s ladění zobrazení nebo něco získat jakékoliv informace? Nebo jsem SOL?

Položena 27/08/2009 v 03:28
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
6

No, pro začátek, ujistěte se, že máte nativní kód ladění povoleno na kartě Debug vlastností vašeho projektu.

Máte-li zdrojový kód pro DLL, které voláte do, pak byste měli být schopni nastavit tak, abyste mohli vstoupit do rodné DLL stejně jako vy může spravovaný kód. Nejjednodušší způsob, jak to udělat, je přidat zdrojový kód nativní DLL ve stejném roztoku, a pak spojit s výstupem tohoto projektu. Budete muset zajistit, aby Visual Studio může přistupovat jak nativní DLL a že DLL PNR při spuštění vašeho C # aplikace.

Pokud nemáte k dispozici zdrojový kód pro DLL, pak bych navrhnout nastavení zarážku těsně před voláním do nativní metody. Potom nechte program pokračovat a pozastavit program ručně po jedné nebo dvou sekund. Ujistěte se, že jste stále při pohledu na stejné vlákno, které volal do nativního DLL a pak se dívat na diváka zásobníku volání. Pokud vidíte čáru, která říká, že „[Externí Code]“, ujistěte se, že „Show External Code“ je kontrolována v kontextové nabídce. Když je zaškrtnuto, zásobník volání může být schopen říct, co metoda je v současné době provádění. Text bude v šedé barvě, což naznačuje, že tato metoda je v externí DLL. Pokud provádíte volání metody Windows, pak instalací Windows Files Symbol První mohou dovolit debugger, aby vám více informací ( http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx ). Můžete také pozastavit a pokračovat v debuggeru několikrát vidět, co zásobník volání vypadá na různých místech popravy. Z této informace, můžete být schopni získat představu o tom, co se děje špatně.

Také se snaží procházející různými argumenty, počínaje nejvíce triviální věci můžete a uvidíme, jestli máte stejné chování. A konečně, aby bylo naprosto jisti, že máte všechny vaše marshalling metadata správné.

Odpovězeno 27/08/2009 v 04:40
zdroj uživatelem

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