【问题标题】:How do I get Visual Studio to debug an Android app?如何让 Visual Studio 调试 Android 应用程序?
【发布时间】:2021-06-21 16:44:22
【问题描述】:

我正在使用 Visual Studio 2017 构建 NativeActivity 并将其部署到我的 Android 设备。它可以毫无问题地构建和部署,但我无法设置断点。

在运行之前,我可以在一行中添加一个断点(例如 android_main() 的第一行),并且在 IDE 中该行的左侧会显示一个小红圈。

但是在安装和运行应用程序后,断点没有触发,因为红色圆圈变成了白色 - 表示没有调试符号。

我已经验证我正在构建调试版本,并且使用 Android Studio 验证了 AP​​K 文件更大并且具有调试符号。

在这一点上,我觉得 Visual Studio 本身很困惑,不知何故无法识别调试符号。

我在 C++ 选项中手动添加了“-g”,并且还添加了 Gradle 行 PackagingOptions.doNotStrip '**.so'。但是这个问题仍然存在。

什么会导致 Visual Studio 中出现这种行为,我该如何解决?

【问题讨论】:

    标签: android visual-studio visual-studio-debugging native-activity


    【解决方案1】:

    Xamarin 调试器只能调试托管(即 C#)代码。如果要调试的项目是托管项目,则断点仅适用于 Xamarin 调试器。如果项目是本机应用程序或本机库,则它们不起作用。

    所以您必须将 NativeActivity c++ 应用程序附加到 Xamarin 托管应用程序(Acttach to Process)以获得您想要的。

    1) 创建 ac# xamarin android 应用,然后将该 xamarin 管理的 apk 文件输入到 NativeActivity c++ 应用的 Properties-->调试 -->要启动的包

    2) 首先启动 Xamarin c# 应用程序,然后激活 Xamarin 调试器。在托管应用仍在运行或调试时,右键单击本机库项目并选择 Debug --> 附加到 Android 进程

    这里是an example provided by Richard Walters,他提供了详细信息。

    【讨论】:

    • 我有另一个 Android 应用,它也是一个 NativeActivity,Visual Studio 可以设置断点和调试。这两个应用程序之间的唯一区别是可以使用的应用程序是使用 ANT 构建的,而不能调试的应用程序是使用 Gradle 构建的。他们都部署和运行应用程序,只是调试不起作用。
    • 尝试在Tools-->Options-->Debugging-->Symbols-->Symbol file location下添加xxx.pdb文件的位置。之后,在调试时,请打开菜单Debugging-->Windows-->Modules 来检查pdb 文件是否加载。您也可以右键单击该 dll-->加载符号
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 2018-12-02
    • 2014-10-29
    • 2016-04-01
    相关资源
    最近更新 更多