在Visual Studio 2017中运行Xamarin.UITest时,如何调试代码及DLL断点?
调试Xamarin.UITest时命中Android DLL断点的实操方案
我来分享一下在Visual Studio 2017 + NUnit 2 Test Adapter + Xamarin.UITest这个组合下,成功命中Android应用所调用DLL断点的具体步骤,亲测可行:
一、前期准备工作
- 确保你的Android项目和被引用的DLL项目都设置为
Debug编译模式,而且DLL的输出路径要和Android项目引用的路径一致,避免不小心引用了Release版本的DLL(这点很容易踩坑)。 - 确认Visual Studio 2017已经安装好NUnit 2 Test Adapter插件,同时Xamarin.UITest的版本要和你的Xamarin项目版本兼容(版本不匹配可能导致调试异常)。
二、配置项目调试属性
1. 配置Android项目
右键你的Android项目 → 选择「属性」→ 切换到「调试」选项卡:
- 「启动调试器」选择「Android调试器」;
- 勾选「启用调试」,根据你的需求选择部署到物理设备或者模拟器(如果用模拟器,记得提前打开模拟器的开发者选项,开启USB调试);
- 确认「部署选项」里的设置正确,比如是否清除应用数据等(按需选择)。
2. 配置UITest项目
右键你的UITest项目 → 选择「属性」→ 切换到「调试」选项卡:
- 「启动项目」选择你的Android项目,而不是直接启动UITest项目;
- 或者不用改这里,后续直接通过Test Explorer调试测试也可以。
三、附加调试器到Android进程
当UITest启动Android应用后,不要着急:
- 在Visual Studio顶部菜单选择「调试」→「附加到进程」;
- 在弹出的窗口里,找到你的Android应用进程(进程名一般是你的应用包名,比如
com.yourcompany.yourapp); - 确保调试器类型选择「Android调试器」,然后点击「附加」。
四、设置断点并启动调试
- 打开你的DLL项目,找到需要调试的代码行,点击行号旁边的空白处设置断点(出现红色实心圆点就说明设置成功,如果是空心的,后续要排查符号加载问题);
- 打开Visual Studio的「Test Explorer」窗口,找到你要运行的UITest测试方法(就是标记了
[Test]的那个); - 右键点击该测试方法,选择「调试选定的测试」。
当测试运行到触发Android应用调用DLL服务的逻辑时,断点就会命中啦!
常见问题排查
- 断点是空心圆点:说明调试符号(pdb文件)没加载。检查DLL的pdb文件是否和DLL在同一目录,Android项目是否引用了Debug版本的DLL,或者尝试清理解决方案后重新编译所有项目。
- 找不到Android进程:确保应用已经被UITest成功启动,或者可以手动启动应用后再附加调试器。
- 调试速度慢:尽量用物理设备代替模拟器,物理设备的调试响应速度会快很多。
内容的提问来源于stack exchange,提问作者ejw
相关产品推荐
相关产品推荐

