2012-12-20 17 views
7

Mam rozwiązanie C++. Projekt startowy jest exe. W rozwiązaniu znajduje się kilka bibliotek dll C# (kierujących na .NET Framework 2.0), które są zarejestrowane dla współdziałania COM. Kiedy umieścić punkt przerwania w kodzie C# otrzymuję pustą czerwoną przerwania z "No native symbols in symbol file"Debuguj C# dll z rozwiązania C++ przez COM

próbowałem ustawienie Project Property Pages -> Debugging -> Debugger Type Mieszany na projekt start-up, który wywołuje metody COM.

Sprawdziłem Debug -> Windows -> Modules. Załadował moje biblioteki dll, a status symbolu to "No native symbols in symbol file".

To nie koniec świata, ponieważ jeśli wykonam Debug -> Start Without Debugging, a następnie Debug -> Attach to Process, zmienię Attach To: na Managed (v2.0, v1.1, v1.0) code, Native code. Następnie trafiłem na punkty przerwania zarówno w kodzie C++, jak iw kodzie C#.

Więc mam moje obejście problemu, ale myślę, że jeśli mogę to zrobić przez dołączenie do procesu - powinienem być w stanie to zrobić, po prostu debugowanie.

Jak mogę uderzyć w punkty przerwań C#, robiąc tylko Debug -> Start Debugging?

+0

wątpliwości, że jest to wykonalne sposób, próbowałem to samo, i godzinami próbują zrobić i ostatecznie utknął z wykorzystaniem dołączyć do procesu, który działa dobrze. – SinisterMJ

+0

Niewystarczająco, nie mam problemu z używaniem załącznika do przetwarzania, jest tylko jedną z tych rzeczy, w których nie można tego zostawić, ponieważ myślisz "na pewno musi być sposób" – Liam

+1

Mam również ten problem i myślę, że fundamentalne Problem polega na tym, że "Mixed" wybiera Native + Managed (v4.0), więc nie ma możliwości wybrania Native + Managed (v2.0) z ustawień startowych. –

Odpowiedz

1

Nie jestem pewien, czy to pomoże, ale dużo pracujemy z C# i C++. Stwierdziłem, że jest to możliwe, umieszczając projekt C++ i projekt C# w tym samym rozwiązaniu i umożliwiając "rodzime debugowanie" w projekcie C#. Wtedy mogłem przeskakiwać między nimi podczas debugowania.

+0

Mam oba projekty w tym samym rozwiązaniu, aw VS2010 ustawiłem opcję "Włącz debugowanie kodu niezarządzanego" we wszystkich projektach C#. Nadal nie działa. Zakładam, że jako projekt startowy jest exe C++, że debugger jest ustawiony na natywny tylko ja ustawiając typ Debugger na Mixed w właściwościach projektu C++. – Liam

4

byłem w stanie do debugowania mojego dll C# od C++ projektu w VS2008, wykonując następujące czynności:

w C++ właściwości projektu, goto Właściwości -> Konfiguracja debugowania. Ustaw "Typ debuggera" na Mieszany. "Załącz" powinno być ustawione na nr

We właściwościach projektu C# na karcie Debugowanie ustaw "Uruchom program zewnętrzny" na pliku wykonywalnym projektu C++.

+1

Działa doskonale dla mnie! Dzięki! –

2

Wiem, że jest trochę stary, ale znalazłem praktyczne rozwiązanie tego problemu.

Miałem ten sam problem podczas korzystania z aplikacji w C++, która używa obiektu COM # C#. Wypróbowałem kilka ustawień w Visual Studio po stronie C++ i C#. Nic nie pomoże, dopóki nie spróbuję ręcznie uruchomić Debuggera.

Można użyć

Debugger.Launch(); 

ręcznie uruchomić debugera na C# DLL. Wiem, że to nie jest najlepszy, ale praktyczny sposób. W późniejszych produktywnych środowiskach musisz usunąć funkcję uruchamiania Debuggera :).

Pozdrowienia