2013-03-05 16 views
5

Naprawdę waliłem głową w przysłowiową ścianę nad tym.DLL Brakujące listy modułów w VS2010

Mam rozwiązanie, które zawiera zarówno projektów kodu C# i C++.

Często dzwonię do bibliotek DLL C++, które są kompilowane w tym projekcie z C# poprzez P/Invoke. Bez problemu. Wszystkie niezbędne ustawienia debuggera w pliku *.sln, a także pliki w C++ i C# zostały ustawione zgodnie z moją najlepszą wiedzą. Uwaga: Często potrafię debugować podobnie kod P/Invoked C++ bez żadnych problemów!

Naturalnie, doszedłem do wniosku, że być może symbole nie ładowały się - jednak po otwarciu okna modułów odkryłem, że biblioteka DLL, do której próbuję wkroczyć, nie jest nawet wymieniona! Uruchomienie funkcji w moim programie C# rzeczywiście używa biblioteki DLL (otrzymuję prawidłowy wynik), ale podczas oglądania okna modułów, biblioteka DLL nadal nie jest wyświetlana.

Czy ktoś ma pojęcie o tym, co się dzieje?


tl; dr

mam sporo doświadczeń z debugowania P/wywołany C++. Jednak biblioteka DLL, którą chcę debugować, nie pojawia się nawet na liście modułów (więc oczywiście nie jestem w stanie do niej wejść, jeśli debugger VS wydaje się być całkowicie nieświadomy jej istnienia).

+0

Jak możemy odtworzyć scenariusz? –

+0

Czy skonfigurowano debagowanie "w trybie mieszanym"? Np. Żaden z natywnych (tj. Modułów C++) nie jest wymieniony lub jest wymieniony na liście, po prostu nie ten, który próbujesz debugować? –

+0

David: Niestety, nie jestem w stanie z łatwością odtworzyć scenariusza, ponieważ jest to jedyny przypadek, w którym nigdy nie miałem biblioteki dll z listy modułów! Matt: Zostałem ustawiony do debugowania w trybie mieszanym w ramach projektów C++, z Załączem ustawionym na Tak. W projekcie C# projekty C++ są wymienione jako zależności. Również w projekcie C# jest zaznaczone Włączanie debugowania kodu niezarządzanego. Chodzi o to, że po wywołaniu kodu, nawet na ekranie Debug> Modules, żadne z bibliotek dll C++ nie są wymienione. Czy któreś z was wcześniej to widziało? Dziękujemy za porady do tej pory! –

Odpowiedz

8

Domyślam się, że nie włączono debugowania dla niezarządzanego kodu. Przejdź do zakładki Właściwości projektu -> Debuguj kartę startową. Zaznacz "Włącz debugowanie kodu niezarządzanego".

+0

Witaj, Matt! Dziękuję za poradę! Włącz niezarządzane debugowanie kodu jest zaznaczone. –

+1

UWAGA: Musi to być ustawione na samym projekcie start-up lub samym pliku * .exe (co wydaje się boleśnie oczywiste z perspektywy czasu, choć nie tak bardzo, gdy próbuje się go rozwiązać), a nie konkretny projekt C# P/Invoking the C++. –

Powiązane problemy