Tae-Sung Shin Tae-Sung Shin - 1 month ago 18
C++ Question

Is there any way to debug c++ dll called from C# DllImport?

I wonder if there is any way to debug c++ dll called from C# PInvoke in VS 2010. I tried to attach the project into c# application but it didn't work - didn't stop at a break point.

I also tried to record anything with OutputDebugString in C++ project but nothing printed with PInvoke call. Despite these issues, the actual function runs well.

Any advice will be appreciated.

Answer

Both require turning on the same option: Project > Properties > Debug tab > tick the "Enable unmanaged code debugging" option.

You can now set a breakpoint in the native DLL code, it will turn from hollow to solid as soon as the C# project loads the DLL. And OutputDebugString() output will go to the Output window thanks to the unmanaged debugging engine being used.