Android NDK调试:设备无法打开

2024-03-21

我现在正在尝试调试我的本机库一段时间,但它不起作用。本机代码可以工作并编译,但出于优化目的,我确实需要调试本机代码。

我已经阅读并遵循了许多教程(例如教程1 http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-debugging/, 教程2 http://www.doc.ic.ac.uk/~cb908/Android%20NDK%20Debugging.pdf)一步一步,但我遇到一些错误,我找不到解决方案。

我已经设置了 Android 和 C++ 调试配置,在使用 Android 调试配置进行调试后,它在加载库后到达断点(只有一个)。我转到 cygwin 并查看是否检测到我的设备(确实如此)。然后运行:

$ ndk-gdb --start --verbose

这给了我以下输出:

Android NDK installation path: /cygdrive/c/Android/android-ndk/android-ndk-r8
Using default adb command: /cygdrive/c/Android/android-sdk/platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.29
Using ADB flags:
Using auto-detected project path: .
Found package name: com.mypackage
ABIs targetted by application: armeabi-v7a
Device API Level: 15
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi-v7a
Using gdb setup init: ./libs/armeabi-v7a/gdb.setup
Using toolchain prefix: /cygdrive/c/Android/android-ndk/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-
Using app out directory: ./obj/local/armeabi-v7a
Found debuggable flag: true
Found device gdbserver: /data/data/com.mypackage/lib/gdbserver
Found data directory: '/data/data/com.mypackage'
Found first launchable activity: .MainActivity
Launching activity: com.mypackage/.MainActivity
## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb shell am start -n com.mypackage/.MainActivity
Starting: Intent { cmp=com.mypackage/.MainActivity }
## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb shell sleep 2
Found running PID: 6907
Launched gdbserver succesfully.
Setup network redirection
## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb shell run-as com.mypackage lib/gdbserver +debug-socket --attach 6907
## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb forward tcp:5039 localfilesystem:/data/data/com.mypackage/debug-socket
Attached; pid = 6907
Could not open remote device: Invalid argument.
Detaching process(es): 6907
## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb pull /system/bin/app_process obj/local/armeabi-v7a/app_process
2405 KB/s (9852 bytes in 0.004s)
Pulled app_process from device/emulator.
## COMMAND: /cygdrive/c/Android/android-sdk/platform-tools/adb pull /system/lib/libc.so obj/local/armeabi-v7a/libc.so
4994 KB/s (286412 bytes in 0.056s)
Pulled libc.so from device/emulator.

User@This-PC /cygdrive/c/Development/MyAppAndroid/trunk/MyApp
$

我可以看到gdbserver已成功启动,这很好,但我不知道为什么会发生这种情况:

Could not open remote device: Invalid argument

因为 adb 可以连接到设备(如之前测试的)。之后,在我看来(我不太熟悉 cygwin)gdb 只是关闭了所有内容,这也会使 eclipse 中的 c++ 调试失败。当我运行它时,出现以下错误:

76-target-select remote localhost:5039
&"Remote communication error: Bad file descriptor.\n"
Remote communication error: Bad file descriptor.
76^error,msg="Remote communication error: Bad file descriptor."

有什么可以阻止 adb 检测到我的设备吗?我一直使用这个设备进行测试(没有c++调试),没有任何问题。

或者问题出在端口错误上?


我遇到了同样的问题,所以我替换了 ndk-gdb 文件中的以下行:

原来的:

run adb_cmd shell run-as $PACKAGE_NAME lib/gdbserver +$DEBUG_SOCKET --attach $PID & 

替换:

run adb_cmd shell run-as $PACKAGE_NAME lib/gdbserver tcp:5888 --attach $PID & 

和原文:

run adb_cmd forward tcp:$DEBUG_PORT localfilesystem:$DATA_DIR/$DEBUG_SOCKET 

替换:

run adb_cmd forward tcp:5039 tcp:5888

修复了“无效参数”问题。

P.

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

Android NDK调试:设备无法打开 的相关文章

  • 错误的本机调用堆栈

    我在 crashylitics 显示本机崩溃的正确调用堆栈时遇到问题 它以前可以工作 但现在调用堆栈要么没有意义 要么名称丢失 我已通过查看 crashylitics 日志文件来确保符号正在上传 那里一切看起来都很好 我进行了一次崩溃测试
  • 如何在 Netbeans 中调试 symfony?我无法调用特定页面

    我已经读过类似的帖子将 PHP 参数传递到 NetBeans 到具有 symfony url 路由功能的页面 https stackoverflow com questions 2052500 passing php arguments i
  • 从 gdb 设置 std::string 变量值?

    是否有可能 当调试器在断点处停止时 修改 std string 变量的值 而不需要采取诸如调整当前缓冲区的内存映像之类的黑客手段 例如类似于 set var mystring hello world 试试这个 经过测试并且对我有用 call
  • Xcode 在调试版本中是否有自动设置的宏?

    所以我可以写这样的代码 ifdef whatever do stuff that will never show up in the production version endif 默认情况下没有什么用处 但您可以设置DEBUG用于调试构
  • 当我调试 ASP.NET MVC 应用程序时,为什么不触发 Application_Start() 事件?

    我目前有以下例程Global asax cs file public static void RegisterRoutes RouteCollection routes routes IgnoreRoute resource axd pat
  • 如何在 Visual Studio 中调试 Windows PowerShell 模块?

    我正在尝试使用 Visual Studio 2015 将 PowerShell 模块编写为 VB NET 项目 我已经能够将一些命令放在一起 将类库编译到 DLL 中 将模块导入到 PowerShell 会话中并调用我创建的命令 到目前为止
  • 启动时暂停 Windows 10 应用商店应用程序

    我正在用 C 编写一个工具来帮助调试和测试已部署的 Windows 10 应用商店应用程序 我遇到的问题之一是我需要一种方法来启动处于挂起状态的商店应用程序 以便我可以在应用程序初始化之前附加调试器 我知道执行此类操作的通常方法是在父进程中
  • OpenCV Android - 无法解析相应的JNI函数

    我正在尝试按照此处概述的本教程使用 Opencv 设置 Android Studio https www youtube com watch v OTw GIQNbD8 https www youtube com watch v OTw G
  • 使用 NDK 时未解决的包含错误

    I am using Android NDK but the c file in the JNI folder is showing the error of Unresolved inclusion as shown in the ima
  • 查看 Android 应用程序的共享首选项?

    当我在 Eclipse 中处理我的应用程序时 有没有办法在模拟器中调试时查看我对应用程序的共享首选项所做的更改 提前致谢 在模拟器中运行项目 然后从 Eclipse 选择菜单 Windows gt 打开透视图 gt DDMS 从选项卡设备中
  • Qt 5.15 mingw 文件夹 bin 中缺少调试 dll *d.dll

    我通过 Qt 维护工具安装了 Qt Creator 和 Qt5 15 但我在 mingw 的 bin 文件夹中缺少像 QtCored dll 这样的调试 dll 我该怎么办 None
  • Android PDF渲染

    我想在 Android 中渲染 打开 PDF 文件 存储在 SDCard 中 而不使用内置应用程序或查看器 1 我们尝试过MuPDF开源库 但是使用该库进行渲染非常慢 2 我们可以使用iText库在Android中渲染PDF文件 即iTex
  • 该模块的调试信息中缺少源信息 - PDB 已成功加载

    Visual Studio 加载正确的 PDB 文件 但无法找到解决方案中任何内容的源信息 我尝试过的事情 清理 重新启动 重新生成项目 CMake 重建 检查模块窗口以确保 PDB 已加载 确实如此 解决方案属性下的 调试源文件 设置混乱
  • 为什么我在 Intellij IDEA 11 中调试 Nodejs 应用程序失败?

    我有一个单进程 node js 应用程序 我希望使用 Intellij IDEA 11 32 位进行调试 node js 也是 32 位 因此 我放置一个初始断点并运行 调试器在断点处停止 但随后拒绝执行以下任何操作 步入 转到另一个断点
  • 节点检查器显示对象“无属性”

    我在调试场景中相当陌生 尤其是节点检查器 安装节点检查器后 我使用 debug 参数启动了简单的节点应用程序 并且能够在 localhost 8080 debug port 5858 处看到调试视图 当我让应用程序在此断点处停止时 rout
  • 有没有办法使用 Eclipse 调试 Web 应用程序?

    我正在使用 Eclipse Java IDE 开发 Web 应用程序 我使用 Tomcat 6 作为我的 servlet 容器 可用于 Java 的工具 包括 Eclipse 似乎缺乏 Web 应用程序的调试功能 与 NET 平台的 Vis
  • 我如何解释这个 JVM 错误?

    我有一个使用一些本机代码的 Java 应用程序 但它出现了错误 我想知道where它有错误 但我不确定如何读取 hs err pid 转储文件 Native frames J compiled Java code j interpreted
  • Intellij - 调试器断点不再工作

    我正在正常工作 调试Java Maven项目与IntelliJ 2018 2 1 然后我单击 Intellij 停止应用程序以对代码进行一些修改 当我在调试模式下再次启动应用程序时 它 调试器 只是停止工作 现在 应用程序需要大约 10 2
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 如何调试仅在应用程序关闭时发生的崩溃? (德尔福)

    因此 经过最近的一些更改 我们发现我们最古老的应用程序之一有时会在关闭时崩溃 这会以 运行时错误 216 消息的形式或来自 Windows 错误报告的消息的形式表明应用程序已停止工作 该应用程序已经发出OutputDebugString 每

随机推荐

  • 如何在客户端读取excel文件内容?

    在 JSP 页面中 我需要浏览 excel 文件 在系统上选择文件后 我需要读取该 excel 文件内容并填写表格 目前我已经尝试使用下面的代码 但它只能在 IE 中工作 并对 ActiveXObject 的 IE Internet 选项进
  • 使用 java poi 从 Office 2007+ 文档中读取属性集

    我尝试从 Office 2007 文档 docx xlsx 读取属性集 找到了惊人的解决方案http poi apache org hpsf how to html http poi apache org hpsf how to html
  • postgresql 生成无间隙的序列

    我必须 必须为发票创建唯一的 ID 我有一个表 ID 和这个唯一编号的另一列 我使用序列化隔离级别 使用 var seq SELECT invoice serial 1 FROM invoice WHERE type type ORDER
  • 导航器.userAgent

    我正在尝试检测浏览器是否是 Safari 如果是这样 那就做点什么吧 在所有其他浏览器中 执行其他操作 if navigator userAgent toLowerCase indexOf safari 1 if safari execut
  • 感叹号在数据类型中起什么作用?

    我是 Haskell 的新手 今天我阅读了 OpenGL 源代码 发现了这个 data VertexArrayDescriptor a VertexArrayDescriptor NumComponents DataType Stride
  • 使用 jQuery 获取元素的真实宽度

    我正在为 html 文件的 视觉正确性 编写一个验证器 目标是检测太宽的元素 这是我的问题的演示 http jsfiddle net vv68y 2 红色虚线表示文档的最大宽度 本例中为 200px 第一段很好 但第二段太宽了 尽管如此 以
  • 刷新所有 Azure 实例上的数据

    刷新所有 Azure 实例中的数据的最佳方法是什么 我有多个实例 每个实例都运行相同的 Web 角色 角色启动时 数据从 Blob 存储读取到本地存储 网站使用的数据会间歇性地有新的更新 我希望能够以编程方式通知每个实例 以将更新的数据从
  • 如何在Terraform中输出一种类型的所有资源?

    我有一堆aws ecr repositories在我的 Terraform 代码中定义 resource aws ecr repository nginx images name nginx test resource aws ecr re
  • 获取字符串形式的属性名称

    我需要一种方法来传递属性并获取分配给它的名称 有什么建议么 property nonatomic retain MyObject crazyObject NSString str SOME WAY TO GET PROPERTY NAME
  • 设置可选参数默认值的 phpdoc 标准?

    Example This function will determine whether or not one string starts with another string param string haystack p The st
  • 如何在 Objective-C 中内联声明好的旧 C 数组?

    这是我的代码 NSUInteger indexArr 1 2 3 4 NSIndexSet indexSet NSIndexPath indexPathWithIndexes indexArr length 4 有没有办法声明indexAr
  • BEM 块、命名和嵌套

    我正在尝试了解 BEM 命名约定 我被困在这个问题上 我可能误解了一些东西 让我们看看 我有一个侧边栏导航和一个内容导航 我的侧边栏导航看起来像这样 div class sidebar ul class sidebar nav li cla
  • Eclipse 作为 IDE + Mercurial 用于版本控制 + ?错误跟踪 = 好主意? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 对于一个新的 Java Web 项目 我考虑使用 Eclipse 作为 IDE Mercurial 用于版本控制 某种错误跟踪软件 我听说过错误
  • 如果没有打印语句,循环看不到其他线程更改的值

    在我的代码中 我有一个循环等待其他线程更改某些状态 另一个线程可以工作 但我的循环从未看到更改后的值 它永远等待 然而 当我放一个System out println在循环中声明 它突然起作用了 为什么 以下是我的代码示例 class My
  • 如何迭代json对象的所有子节点?

    我想迭代 json 对象的所有节点 并写出一个简单的键值映射 如下所示 name first John last Doe items name firstitem stock 12 name 2nditem stock 23 company
  • 在 dplyr 中使用 select 函数时保留列标签

    我组合了多个数据集并仅保留特定列 但是 当我使用 dplyr 中的选择函数时 它不会保留原始列标签 在我的情况下为项目文本 导入数据后 我使用以下代码来选择要保留的变量 Wave1Data Clean lt select Wave1Data
  • 在Python中使用networkx绘制二部图[重复]

    这个问题在这里已经有答案了 我有一个二分图的 n1 n2 双邻接矩阵 A 矩阵 A 是 scipy sparse csc 矩阵 我想使用 Networkx 中的 A 绘制二分图 假设节点根据其称为 node class 的类标签进行着色 我
  • JetBrains Rider 在 Mac 上启用 ASP.NET MVC 迁移

    我在 macOS Mojave 上安装了 JetBrains Rider 2018 3 我创建了一个 ASP NET MVC 项目 安装了实体框架 6 2 我将连接字符串添加到 web config 中 但是 我不知道如何配置app con
  • Android 中的 USB 加密狗识别 - Beaglebone

    Issue Beaglebone 中的 Android JellyBean4 1 2 无法识别某些华为 USB Dongle 详细 我正在使用在 Android JellyBean4 1 2 上运行的 BeagleBone Huawei E
  • Android NDK调试:设备无法打开

    我现在正在尝试调试我的本机库一段时间 但它不起作用 本机代码可以工作并编译 但出于优化目的 我确实需要调试本机代码 我已经阅读并遵循了许多教程 例如教程1 http mhandroid wordpress com 2011 01 23 us