月度归档:2010年12月

中文版Visual Studio下调试Brew MP程序的方法

装了Brew MP的开发环境,但调试不行,按BMP工具栏上的”Debug”图标,会出”无效的索引”对话框,按F5会让你选择调试程序,设为BMP的模拟器,倒是可以起来,但加不上断点。问了同事,说是中文版Visual Studio的问题,换了英文版就行了。可我不想那么麻烦地再重新卸载安装。网上搜来搜去,也都是这么说的。只好自己琢磨了。

其实Brew程序在模拟器下调试也就是调试一个DLL,没什么理由不行的。于是把Brew MP的模拟器运行起来,用附加进程的方式将调试器附加到Simulator.exe,发现还是加不上断点。用ProcessExplorer查看,发现Simulator.exe并没有调用要调试的BMP app的DLL,而是另一个进程SimTargetExecutor调用了DLL。将调试器附加到这个进程,还是不行。最后在附加进程对话框中找到一个选择代码类型的选项,设为”本机+托管”,而非缺省的”自动”,居然OK了。想来应该是这个SimTargetExecutor是个.NET的托管程序,而我们的dll是个native的程序,因此缺省”自动确定”的话,会当成调试托管程序,native程序的断点就打不上。

这样就好办了,把解决方案的属性中的”调试”中,”命令”设为”SimTargetExecutor.exe”,”调试器类型”设为”混合”,”附加”设为”是”,按F5即可启动模拟器并调试,加断点什么的都没问题。唯一的缺点是它不会自动启动我们的BMP app,得退到AppManager中,再选择我们的app启动。当然提前加上断点时,由于dll尚未载入,因此是个带问号的无效断点样式,只要app启动起来,就可以了。