In order to debug (step through code etc) a dll loaded by XBMC you must have the DLL compiled with debugging info, and linked against the Multi-threaded runtime library, and you should enable symbol loading in XBMC. Once you do this, you can do all the usual debug stuff, such as stepping in to functions with F11 and so on (F11 twice to skip through the DEFINE_METHOD macros). Configuration properties for the DLL ==================================== The DLL must be built with the following project settings: 1. General -> Configuration Type: Dynamic Library (.dll) 2. C/C++ -> General -> Debug Information Format: Program Database (/Zi) 3. C/C++ -> Code Generation -> Runtime Library: Multi-threaded (/MT) 4. Linker -> Debugging -> Generate Debug Info: YES (/DEBUG) 5. Linker -> Debugging -> Generate Program Database File: $(OutDir)/$(ProjectName).pdb Note that settings 2, 4 and 5 aren't needed for a normal dll for CVS. Also, the Runtime LIbrary setting (3) should be set to Multi-threaded DLL (/MD) to reduce the dll size for CVS. XBMC modifications required =========================== 1. In the Dll Interface setup, you should add the LOAD_SYMBOLS() macro immediately after the DECLARE_DLL_WRAPPER() macro and before any DEFINE_METHOD macros. 2. You should uncomment the #define ENABLE_SYMBOL_LOADING 1 at the top of DllLoader.cpp