Liam
Liam

Reputation: 495

Debug C# dll from C++ solution via COM

I have a C++ solution. The startup project is an exe. In the solution there are a number C# dlls (targeting .NET Framework 2.0) that are registered for COM interop. When I put a breakpoint in the C# code I get the hollow red breakpoint with "No native symbols in symbol file"

I have tried setting Project Property Pages -> Debugging -> Debugger Type to Mixed on the start-up project that calls the COM methods.

I have checked Debug -> Windows -> Modules. It has loaded my dlls, and the symbol status is "No native symbols in symbol file".

This is not the end of the world because if I do Debug -> Start Without Debugging and then Debug -> Attach to Process, changing the Attach To: to Managed (v2.0, v1.1, v1.0) code, Native code. Then I hit breakpoints in both the C++ code and C# code.

So I have my workaround but I reckon if I can do it by attaching to process - I should be able to do it by just debugging.

How can I hit my C# breakpoints by just doing Debug -> Start Debugging?

Upvotes: 7

Views: 2938

Answers (3)

nudelteller
nudelteller

Reputation: 21

I know it's a little bit old but I found a practical solution for the problem.

I had the same problem while using a C++ application which uses a C# COM-Object. I tried several settings within Visual Studio on the C++ and C# side. Nothing helps until I tried manually launching the Debugger.

You can use

Debugger.Launch();

to manually start the Debugger on your C# DLL. I know this is not the best but a practical way. In later productive environments you have to remove the Debugger launch function :).

Regards

Upvotes: 2

monstercoo
monstercoo

Reputation: 93

I was able to debug my C# dll from a C++ project in VS2008 by doing the following:

In the C++ project's properties, goto Configuration Properties -> Debugging. Set "Debugger Type" to Mixed. "Attach" should be set to No.

In your C# project properties, in the Debug tab, set the "Start External Program" to your C++ project's executable.

Upvotes: 4

user427390
user427390

Reputation:

I am unsure if this will help but we work a lot with C# and C++. I found this to be possible by placing the C++ project and the C# project in the same solution and enabling "native debugging" in the C# project. Then I was able to jump back and forth between them while debugging.

Upvotes: 1

Related Questions