如何逐行调试Android Studio项目(使用NDK和JNI)以查看工作流程?

2023-12-03

我正在使用 Visual Studio,它的调试机制对我来说非常有用。 1 个项目中有许多头文件和 C 文件,只需一个简单的 F10,它就可以带我从 main() 函数的开头开始浏览,以便我可以看到正在执行的代码的顺序。

现在我进入 Android Studio 并开始使用 NDK、JNI 的项目(例如该项目:https://github.com/googlesamples/android-ndk/tree/master/gles3jni),这让我很困惑,因为有很多 .java 文件和其他 C++(本机代码)文件,而且我不知道首先执行哪个文件中的哪个代码以及它是如何继续的。

我的问题是:我正在寻找一种从头开始在 Android Studio 中逐行调试的方法查看其工作流程喜欢 Visual Studio 的做法,但我从搜索中得到的只是调试时如何从断点开始。

我尝试将断点放在onCreate()启动器活动的方法和使用F8 to Step Over and F7 to Step Into但它并不像我预期的那样工作。它不断带我去超级班Activity.java and GLSurafaceView.java而不是带我去看 C++ 代码。 Android Studio 有没有办法做到这一点以及如何做到这一点?

我已经尝试过其他项目,但问题仍然存在。希望有人能帮忙。


这不会发生。您的应用程序(Java 样板代码)设置为响应用户使用该应用程序以及安装该应用程序的设备时发生的许多系统事件。如果你的c++代码是一段单一的简单算法,你可以在开始时设置断点,然后真正一步一步地执行。但对于 Android Studio,即使这个过程也不像 Vusial Studio 那么容易。首先,总是远程调试,依赖于微妙的通信协议。

也就是说,您可以尝试将 Microsoft Visual Studio 设置为调试本机 Android 代码的 IDE。它出奇地强大,而且您可能更熟悉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何逐行调试Android Studio项目(使用NDK和JNI)以查看工作流程? 的相关文章

随机推荐

  • 我使用字典是否错误,看起来太慢了

    我使用了 VS 分析器并注意到程序大约 40 的时间花费在下面的行中 我在用着title1 and color1因为 Visual Studio 或 Resharper 建议这样做 下面的代码是否存在性能问题 Dictionary
  • codeigniter 调整图像大小并创建缩略图

    您好 根据 ci 文档 您可以使用 image lib 调整图像大小 并且有一些选项建议我们可以从该图像创建其他缩略图 create thumb FALSE TRUE FALSE boolean Tells the image proces
  • 链接时可以混合静态库和共享库吗?

    我有一个 C 项目 它生成十个可执行文件 我希望将所有这些文件静态链接 我面临的问题是这些可执行文件之一使用第三方库 其中只有共享对象版本可用 如果我通过了 static标记为 gcc ld 会错误说它找不到有问题的库 我认为它正在寻找 a
  • Spring MVC:如何重定向到有错误的页面?

    我试图让我的控制器重定向到带有自定义错误消息的页面 RequestMapping method RequestMethod POST public String processSubmit Valid Voter voter Binding
  • 如何制作深度常量指针

    假设我想用 C 表示二叉树 通常 我想要一个Node像这样的结构 struct Node Node left Node right 这里我使用结构体和原始指针只是为了简单起见 我知道我应该使用智能指针进行内存管理 这种表述有一个问题 我永远
  • Ruby 查看 csv 数据

    我从 csv 文件中获取一些数据 还有如何选择 csv 中的前 20 个数据 例如 A B C D E F 还有方法 def common uploader require csv arr CSV read Rails public pat
  • 如何从 Dataproc 上的检查点重新启动 Spark Streaming 作业?

    这是后续dataproc 上的 Spark 流抛出 FileNotFoundException 在过去的几周里 不确定从什么时候开始 重新启动 Spark 流作业 即使使用 kill dataproc agent 技巧也会抛出此异常 17
  • ORA-02070: 数据库不支持此上下文

    我有一个查询 例如 INSERT INTO sid rem dev db sid select sid from v session 现在 当我执行这个查询时 我得到 ORA 02070 database does not support
  • Google Translate API 和 Firebase Firestore 正在互相残杀

    我们正在尝试编写一个 Google Cloud Function 它从 Google Translate API 获取翻译 然后将结果写入我们的 Firebase Firestore 数据库 每个人单独工作 但一起工作就没有任何效果 换句话
  • FFmpeg filter_complex concat 仅给出作物的第一个输入

    在使用具有多个输入和多个输出的 concat 和crop 时 我遇到了问题 这是 ffmpeg y i input 1 mp4 i input 2 mp4 i input 3 mp4 i input 4 mp4 filter complex
  • 推送到 Heroku 时出错:找不到模块“node-linux-x64/package.json”

    将全栈 Javascript 应用程序部署到 Heroku 时 我收到以下错误 Error Cannot find module node linux x64 package json 还有一个语法错误 但我不认为这是原因 我是 Mac 用
  • 黑莓 - 如何用图像占据一个完整的按钮

    我编写了 BlackBerry 代码来将图像添加到 ButtonField 我希望整个按钮都被图像占据 但图像没有完全显示在 ButtonField 上 按钮的顶部 左侧和右侧都有很多边距 我尝试使用 cellpadding 但它不起作用
  • 使用 D3 的 XHR / Post 请求

    我正在研究如何使用极其强大的功能来发出 POST 请求D3 我完全可以推荐它用于数据可视化 并发现xhr2分支D3 的作者目前正在致力于 xhr POST 请求 和其他请求类型 支持 看起来这是一个全新的功能 因为合并请求来自昨天 2012
  • Function.createCallback 在 FireFox 中无法正确传递上下文

    我发现了 MS AJAX 库与 FireFox 交互方式中的一个错误 但也许我只是做错了 我有一个看起来像这样的脚本 dowork value some value currentRetry 0 Try to connect at leas
  • 设置 OpenJDK JVM 故障转储位置

    我正在使用 OpenJDK 8 并且正在尝试找出设置 JVM 二进制转储位置的方法 这是我的 java version 的输出 openjdk版本 1 8 0 232 OpenJDK 运行时环境 AdoptOpenJDK build 1 8
  • 如何使 Google 地图居中而不位于屏幕中心?

    我有一个基于 Google 地图 使用 gmap3 的网站 该网站有标记和其上方的浮动小部件 其中包含有关活动标记的文本 这个浮动小部件大约占据屏幕的一半 地图自动居中 或平移至 活动标记 从上面可以看出 屏幕中央的活动标记非常靠近文本小部
  • 使用 IIS 随机 404

    什么会导致 IIS 仅有时返回 404 如果我在页面上遇到 404 我只需点击刷新 它就会出现 它是可重现的 我用 fiddler 来查看发生了什么 但没有看到任何异常 我已经设置了 IIS 跟踪 但同样 我不知道问题到底是什么 该文件存在
  • 计算 array1 第 i 行和 array2 第 i 列的乘积 - NumPy

    我有一个矩阵M1形状的 N 2 和另一个矩阵M2 2 N 我想得到一个结果 N 每个元素i是的产物i第 行M1 and i第 列M2 我尝试在 NumPy 中使用 dot 但它只能给出矩阵乘法结果 即 N N 当然 我可以采取我想要的对角线
  • 在 R 中随机选择组(以及每组的所有病例)?

    我有一个包含两个数据级别的 R 数据框 id and year 在由以下定义的组内id 年数增加 整个数据集每组的年数相同 如下所示 id year var1 var2 11A 2001 11A 2002 11A 2003 11A 2004
  • 如何逐行调试Android Studio项目(使用NDK和JNI)以查看工作流程?

    我正在使用 Visual Studio 它的调试机制对我来说非常有用 1 个项目中有许多头文件和 C 文件 只需一个简单的 F10 它就可以带我从 main 函数的开头开始浏览 以便我可以看到正在执行的代码的顺序 现在我进入 Android