【问题标题】:Xamarin Android Application Not Hitting BreakpointsXamarin Android 应用程序没有遇到断点
【发布时间】:2017-01-09 08:49:26
【问题描述】:

我只是为了一个项目的工作和个人利益而进入 xamarin android 开发,我遇到了调试问题。我拥有的项目只是一个 android 空白应用程序项目。我添加了 2 个按钮和一个名为 buttonPrev、buttonNext 和 textTitle 的 TextView。单击上一个按钮将 textTitle 文本设置为“Prev Clicked”,下一个按钮将 textTitle 更改为“Next Clicked”。在 buttonPrev_Click 事件处理程序中,我设置了一个断点。一旦我在 android 模拟器中运行应用程序,这个断点就会变成一个禁用的断点。

我目前遇到的问题是,当我设置断点时,代码左侧的断点图标是禁用的断点。将鼠标悬停在未命中的禁用断点上时,我得到以下消息。

当前不会命中断点。包含此断点的模块尚未加载或无法获取断点地址。 位置:MainActivity.cs 第 36 行字符 10 ('CoursesAndroid.MainActivity._buttonPrev_Click(object sender, EventArgs e)')

我通过互联网研究尝试过的事情。

  1. 确保在项目属性中选中使用共享运行时复选框。
    位置:项目属性=>Android 选项=>打包选项卡=>使用共享运行时。
  2. 选中和取消选中使用快速部署(仅限调试模式)复选框。 项目 位置:属性=>Android 选项=>打包选项卡=>使用快速部署(仅限调试模式)
  3. 将调试器选项设置为 Xamarin(默认)和 Microsoft。 位置:属性=>Android 选项=>打包选项卡=>调试器
  4. 删除项目目录下的obj&bin目录,重新构建运行应用。
  5. 卸载并重新安装 Hyper-V,并在重新安装之前删除设备管理器中的所有隐藏项目。

我在这里不知所措,任何帮助将不胜感激。如果需要更多信息,请不要犹豫,我会尽力回答。

我正在使用的东西:

  1. Visual Studio 2015 更新 3 - 版本 14.0.25425.01
  2. Android SDK - Android 7.0 (API 24)
  3. 适用于 Android 的 Visual Studio 模拟器
  4. 模拟器设备配置文件:5" KitKat (4.4) XXHDPI Phone API Level 19(KitKat,4.4)

项目属性设置:

注意:这些是 Android 选项部分中的设置。

包装标签

  1. 使用共享运行时:选中
  2. 使用快速部署(仅限调试模式):选中
  3. 为每个选定的 ABI 生成一个包 (.apk):未选中(默认)
  4. 启用 Multi-Dex:未选中(默认)
  5. 启用 Progaurd:未选中和禁用(无法使用和默认)
  6. 启用开发人员检测(调试和分析):选中(默认)
  7. 调试器:设置为 Microsoft(默认设置为 Xamarin)

链接器标签

  1. 链接:无(默认)
  2. 跳过链接程序集:空白(默认)
  3. 其他支持的编码:全部未选中(默认)

高级选项卡

  1. 支持的架构:全部选中(默认)
  2. Java 最大堆大小:空(默认)
  3. 其他 Java 选项:空(默认)
  4. 其他 mondroid 参数:空(默认)

发现更多信息 - 2016 年 9 月 1 日

与这篇文章相关的这篇文章Using Microsoft debugger with Xamarin Android 提供了有关使用 MicrosoftXamarin 调试器之间区别的信息。 Microsoft 调试器适用于本机应用程序,Xamarin 调试器适用于托管应用程序。使用 Microsoft 调试器和 Xamarin 调试器的行为略有不同。使用 Xamarin 调试器,断点不会自行禁用,但在 Microsoft 调试器自行禁用且未命中的情况下仍不会命中。这对我来说很有意义,所以我将 Xamarin 上的设置保留为调试器。我还注意到,当使用 Xamarin 调试器时,Debug Location Toolbar 中附加的进程项是空的,我什至没有处于调试模式并且应用程序没有运行。所以问题是它无法附加到调试器。以下是运行应用程序时在 Visual Studio 中设置为 Debug 的输出窗口的附加信息。以粗体突出显示的行我认为可能是由于找不到程序集而导致的问题。

调试输出窗口信息

Android 应用程序正在调试。 无法连接到调试器。 09-01 10:22:50.172 D/Mono(2431):配置尝试解析:'/Users/builder/data/lanes/3540/1cf254db/source/monodroid/builds/install/mono-x86/etc/mono/程序集/mscorlib/mscorlib.config'.09-01 10:40:57.644 W/monodroid(2796):尝试从以下位置加载 sgen:/data/data/CoursesAndroid.CoursesAndroid/files/。覆盖 /links/libmonosgen-2.0.so

09-01 10:40:56.532 D/dalvikvm(2763):后期启用 CheckJNI

09-01 10:40:56.564 D/dalvikvm(2763): 试图加载 lib /data/app-lib/CoursesAndroid.CoursesAndroid-2/libmonodroid.so 0xa9037000

09-01 10:40:56.564 D/dalvikvm(2763):添加了共享库 /data/app-lib/CoursesAndroid.CoursesAndroid-2/libmonodroid.so 0xa9037000

09-01 10:40:56.564 W/monodroid(2763):使用覆盖路径:/data/data/CoursesAndroid.CoursesAndroid/files/。覆盖

09-01 10:40:56.568 W/monodroid(2763):使用覆盖路径:/storage/emulated/0/Android/data/CoursesAndroid.CoursesAndroid/files/.覆盖

09-01 10:40:56.572 W/monodroid(2763):尝试从以下位置加载 sgen:/data/data/CoursesAndroid.CoursesAndroid/files/。覆盖/libmonosgen-2.0.so

09-01 10:40:56.572 W/monodroid(2763):尝试从以下位置加载 sgen:/storage/emulated/0/Android/data/CoursesAndroid.CoursesAndroid/files/。覆盖 /libmonosgen-2.0.so

09-01 10:40:56.572 W/monodroid(2763):尝试从以下位置加载 sgen:/data/app-lib/CoursesAndroid.CoursesAndroid-2/libmonosgen-2.0.so

09-01 10:40:56.572 W/monodroid(2763):尝试从以下位置加载 sgen:/data/data/CoursesAndroid.CoursesAndroid/files/。覆盖/links/libmonosgen-2.0 .so

09-01 10:40:56.572 W/monodroid-debug(2763):尝试使用选项初始化调试器:--debugger-agent=transport=dt_socket,loglevel=0,address=127.0.0.1:8963,服务器=y,嵌入=1

09-01 10:40:56.736 W/monodroid-debug(2763):接受的标准输出连接:43

09-01 10:40:57.496 D/Mono (2763): Image addref mscorlib[0xb92dafe0] -> mscorlib.dll[0xb92da2a0]: 1

09-01 10:40:57.500 D/Mono (2763): AOT 模块“mscorlib.dll.so”未找到:dlopen 失败:库“/data/app-lib/CoursesAndroid .CoursesAndroid-2/libaot-mscorlib.dll.so" 未找到

09-01 10:40:57.500 D/Mono (2763): AOT 模块 '/Users/builder/data/lanes/3540/1cf254db/source/monodroid/builds/install/mono -x86/lib/mono/aot-cache/x86/mscorlib.dll.so' 未找到:dlopen 失败:库“/data/app-lib/CoursesAndroid.CoursesAndroid-2/libaot-mscorlib.dll.so”未找到

09-01 10:40:57.500 D/Mono (2763):配置尝试解析:'mscorlib.dll.config'。

09-01 10:40:57.500 D/Mono(2763):配置尝试解析:'/Users/builder/data/lanes/3540/1cf254db/source/monodroid/builds/install/mono-x86/etc /mono/assemblies/mscorlib/mscorlib.config'。

09-01 10:40:57.512 D/Mono (2763):程序集 mscorlib[0xb92dafe0] 添加到域 RootDomain,ref_count=1

【问题讨论】:

    标签: c# android debugging visual-studio-2015 xamarin.android


    【解决方案1】:

    经过更多的挖掘,我找到了自己问题的答案。以下是我解决问题的方法。

    这是包含有关修复信息的帖子。

    Xamarin Forms Android App Crashes Running Debug with VS Android Emulator

    Visual Studio Emulator For Android 使用 Hyper-V 中的虚拟机。问题是在创建虚拟机时,处理器设置未正确设置以进行调试。因此,要解决此问题,必须设置虚拟机处理器的设置以允许进行调试。

    还要确保设置了以下项目属性。

    1. 项目属性 => Android 选项 => 使用快速部署(仅限调试模式)未选中
    2. 项目属性 => Android 选项 => 调试器设置为 Xamarin

    我希望这篇文章可以帮助任何遇到调试问题的人。

    编码愉快!!

    【讨论】:

    • 既然您已经解决了这个问题,请随时将其标记为答案,以便其他遇到相同问题的社区成员有所帮助。
    • 它不会让我。它说我可以在 24 分钟内将其标记为已回答。
    • “快速部署”是我的问题。希望我能再投票 10 次,我已经在我们的 Xamarin Forms 项目中说“screw Android”了 2 周,但仅此而已!
    • 太棒了...取消选中快速部署让它工作...谢谢
    【解决方案2】:

    您的帖子确实帮助解决了我遇到的类似调试问题。查看我遇到的问题的详细信息http://forums.xamarin.com/discussion/comment/223723

    【讨论】:

    • 太棒了。很高兴我能提供帮助。
    【解决方案3】:

    我刚刚检查了 csproj 文件 (Visual Studio)。平台定义错误:

    PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "

    PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "

    并且在 Xamarin 项目属性中:x86

    我在 csproj 文件中将 AnyCPU 转换为 x86。现在它对我有用。

    旧的解决方法对我不起作用。

    看起来像 xamarin 的 bug

    【讨论】:

      猜你喜欢
      • 2016-11-15
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      • 2023-04-10
      • 2015-12-13
      • 1970-01-01
      相关资源
      最近更新 更多