- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正尝试在我的 HTC Desire 上为我的 Android 项目执行 native 代码调试。该项目由一层薄薄的 JNI 包装器和 C++ 中的主要 block 组成,使用 ndk-build 编译。设置了可调试标志,我在 HTC Desire 上运行 2.2,并且在我的 PC 上使用 Ubuntu。
所以一个普通的 ndk-gdb --start 返回一个:
ERROR: Could not setup network redirection to gdbserver?
Maybe using --port=<port> to use a different TCP port might help?
这很奇怪。上网查了一下,发现是ndk-gdb的一个缺陷导致的错误消息错误。如果我运行 ndk-gdb -- start --verbose 我得到这个困惑的错误:
Android NDK installation path: /home/marco/dev/android-ndk
Using specific adb command: /home/marco/dev/android-sdk//platform-tools/adb
ADB version found: Android Debug Bridge version 1.0.26
Using final ADB command: '/home/marco/dev/android-sdk//platform-tools/adb'
Using auto-detected project path: .
Found package name: com.marco83.siege
ABIs targetted by application: armeabi
Device API Level: 8
Device CPU ABIs: armeabi-v7a armeabi
Compatible device ABI: armeabi
Found debuggable flag: true
Found device gdbserver: /data/data/com.marco83.siege/lib/gdbserver
Using gdb setup init: /home/marco/dev/siege_game/trunk/SiegeGameNative/libs/armeabi/gdb.setup
Using toolchain prefix: /home/marco/dev/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-
Using app out directory: /home/marco/dev/siege_game/trunk/SiegeGameNative/obj/local/armeabi
Found data directory: 'run-as: Package 'com.marco83.siege' has corrupt installation'
Found first launchable activity: .Main
Launching activity: com.marco83.siege/.Main
## COMMAND: /home/marco/dev/android-sdk//platform-tools/adb shell am start -n com.marco83.siege/.Main
Starting: Intent { cmp=com.marco83.siege/.Main }
Warning: Activity not started, its current task has been brought to the front
## COMMAND: /home/marco/dev/android-sdk//platform-tools/adb shell sleep 2
Found running PID: 844
Launched gdbserver succesfully.
Setup network redirection
## COMMAND: /home/marco/dev/android-sdk//platform-tools/adb forward tcp:5039 localfilesystem:run-as: Package 'com.marco83.siege' has corrupt installation/debug-socket
## COMMAND: /home/marco/dev/android-sdk//platform-tools/adb shell run-as com.marco83.siege lib/gdbserver +debug-socket --attach 844
Android Debug Bridge version 1.0.26
-d - directs command to the only connected USB device
returns an error if more than one USB device is present.
-e - directs command to the only running emulator.
returns an error if more than one emulator is running.
-s <serial number> - directs command to the USB device or emulator with
the given serial number. Overrides ANDROID_SERIAL
environment variable.
-p <product name or path> - simple product name like 'sooner', or
a relative/absolute path to a product
out directory like 'out/target/product/sooner'.
If -p is not specified, the ANDROID_PRODUCT_OUT
environment variable is used, which must
be an absolute path.
devices - list all connected devices
connect <host>[:<port>] - connect to a device via TCP/IP
Port 5555 is used by default if no port number is specified.
disconnect [<host>[:<port>]] - disconnect from a TCP/IP device.
Port 5555 is used by default if no port number is specified.
Using this ocmmand with no additional arguments
will disconnect from all connected TCP/IP devices.
device commands:
adb push <local> <remote> - copy file/dir to device
adb pull <remote> [<local>] - copy file/dir from device
adb sync [ <directory> ] - copy host->device only if changed
(-l means list but don't copy)
(see 'adb help all')
adb shell - run remote shell interactively
adb shell <command> - run remote shell command
adb emu <command> - run emulator console command
adb logcat [ <filter-spec> ] - View device log
adb forward <local> <remote> - forward socket connections
forward specs are one of:
tcp:<port>
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
dev:<character device name>
jdwp:<process pid> (remote only)
adb jdwp - list PIDs of processes hosting a JDWP transport
adb install [-l] [-r] [-s] <file> - push this package file to the device and install it
('-l' means forward-lock the app)
('-r' means reinstall the app, keeping its data)
('-s' means install on SD card instead of internal storage)
adb uninstall [-k] <package> - remove this app package from the device
('-k' means keep the data and cache directories)
adb bugreport - return all information from the device
that should be included in a bug report.
adb help - show this help message
adb version - show version num
DATAOPTS:
(no option) - don't touch the data partition
-w - wipe the data partition
-d - flash the data partition
scripting:
adb wait-for-device - block until device is online
adb start-server - ensure that there is a server running
adb kill-server - kill the server if it is running
adb get-state - prints: offline | bootloader | device
adb get-serialno - prints: <serial-number>
adb status-window - continuously print device status for a specified device
adb remount - remounts the /system partition on the device read-write
adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program
adb reboot-bootloader - reboots the device into the bootloader
adb root - restarts the adbd daemon with root permissions
adb usb - restarts the adbd daemon listening on USB
adb tcpip <port> - restarts the adbd daemon listening on TCP on the specified port
networking:
adb ppp <tty> [parameters] - Run PPP over USB.
Note: you should not automatically start a PPP connection.
<tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
[parameters] - Eg. defaultroute debug dump local notty usepeerdns
adb sync notes: adb sync [ <directory> ]
<localdir> can be interpreted in several ways:
- If <directory> is not specified, both /system and /data partitions will be updated.
- If it is "system" or "data", only the corresponding partition
is updated.
environmental variables:
ADB_TRACE - Print debug information. A comma separated list of the following values
1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp
ANDROID_SERIAL - The serial number to connect to. -s takes priority over this if given.
ANDROID_LOG_TAGS - When used with the logcat option, only these debug tags are printed.
ERROR: Could not setup network redirection to gdbserver?
Maybe using --port=<port> to use a different TCP port might help?
marco@pacer:~/dev/siege_game/trunk/SiegeGameNative$ run-as: Package 'com.marco83.siege' has corrupt installation
正如您在此处看到的和报告的那样:http://vilimpoc.org/blog/2010/09/23/hello-gdbserver-a-debuggable-jni-example-for-android/由不同的同时输出混合引起;真正的错误应该是
Package 'xxxxx' has corrupt installation
对此错误的进一步调查指出:http://osdir.com/ml/android-ndk/2010-08/msg00263.html
报告了相同的错误,他们说无法在 Desire 上进行 native 调试。问题是 run-as
无法访问/data 文件夹。
除了 root/刷机之外还有什么解决办法吗?为什么 run-as
访问/data?我在考虑一个天真的解决方案,我将包(objs、libs 等)复制到一个更容易访问的位置(比如在 SD 卡上),然后告诉调试器访问该位置 - 这可行吗?
谢谢马可
编辑:更新:我使用 unrevoked3 对手机进行了 root。即使我设置了 chmod 0777 data
(这可能非常危险),我也会得到同样的错误。正如帖子中第二个链接所报告的,run-as 正在检查/data 是否可访问。如何访问运行源代码?是否可以重新编译它并上传一个修改后的版本来绕过这个检查? (因为我可以将/data 设置为任何人都可以读取)
最佳答案
我通过更改目录“/data/data”的访问权限和所有权解决了 HTC Desire S (2.3.3) 的这个问题:
修复前:
ls -l /data
(...)
drwxrwxrwx root root 2012-03-03 19:07 data
在根模式下:
chmod 771 /data/data
chown system.system /data/data
ls -l /data
(...)
drwxrwx--x system system 2012-03-03 19:07 data
/data 目录也可能需要更改。
chmod 771 /data
chown system.system /data
关于HTC Desire : run-as flaw? 上的 Android native 调试 (ndk-gdb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4873124/
我没有主意,我一整天都在尝试分离一个格式为:的文件 AN Aixas AN Aixirivall AN Aixovall AN Andorra la Vella BR Salto do Ma
我想在动态生成的控件中设置所需的 ClientID。如果您有任何想法将所需的 ClientID 设置为控件而不是告诉我,则 ClientID 是只读的 最佳答案 这只能在 .Net 4 及更高版本中完
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我看了看手机规范,是这样说的 “HTC Desire。配备 3.7 英寸 LCD 屏幕(分辨率为 480 x 800 像素)” 好吧,屏幕是 480x800 像素,但它有多少凹陷?以及我该如何计算。
我使用了 SauceLabs example DesiredCapabilities capabilities = new DesiredCapabilities(); capabilit
问题 我想实现TransparencyChecker Interface,它将验证网络中的任何交易所是否都可以使用来自其他交易所的所有交易信息。 问:TransparencyChecker Infer
在我的应用程序中,一项服务是从服务器获取数据并将其插入表 A。 如果我转到特定的 UI,我需要列出来自另一个 table B 的数据 if background 操作正在做它会产生数据库锁定异常。我有
我为一个应用程序编写了代码。其中我为编辑文本编写了 IME_ACTION_DONE。所有其他设备都支持此操作,但在 HTC 的期望中,我还没有得到这个“完成”软键盘按钮。我怎样才能得到这个软按钮HTC
我需要将我的安卓设备连接到蓝牙设备。我使用 Google 的 BluetoothChat 示例。 我在使用 Google Nexus 时遇到了一些麻烦,因为 Nexus 正在建立连接但随后立即断开连接
Once the love dead 谢谢你光临我的梦 A people only a heart 一人仅一心 I will always love you我将会永远爱你 Down enoug
我已经尝试解决这个问题 2 个小时了,但我无法理解其他人为遇到类似问题的人提供的解决方案。我看到了一些答案,但无法将其应用于我自己的需求。 我有一张用户表以及他们在不同体育赛事中的时间。我需要制作一个
有人在他们的 SDK 中安装了 HTC Desire HD 吗?如果可以,请告诉我您选择了哪些设置来配置 AVD。 我有一个网站可以在除此之外的所有 Android 设备上正确呈现,因此必须对其进行测
我希望当字符串包含字符“e”时打印红色圆圈,如果字符串包含任何其他字符则打印黑色圆圈。 我不知道我到底哪里错了。有人能帮我吗?。 这是我试过的代码。 HTML diagram JavaScript
我在 Android 中做了一个带自动对焦功能的小型相机应用程序。在我的 nexus one 上,一切正常,但在 htc desire 上,当我从 Camera 对象调用 takePicture()
我想写一个自动生成联系人的程序。我还使用特殊服务在模拟器上添加帐户。电话上使用相同的帐户。下面是我的代码: ContentValues values = new ContentValues(); va
我正在尝试了解消息队列的工作原理。我创建了这个小程序,其中子进程向父进程发送消息。大多数时候,它都有效,但有时我会收到错误消息:Error parent: No message of desired
我在维基百科 (Bikesgray) 的图像上应用了 sobel 运算符。但是我没有得到想要的输出。我的输出比维基百科中显示的输出更亮。我的代码在 .pgm 文件上运行。 这是我的代码的输出和维基百科
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我想要一个带有开始或完成按钮的数字小键盘,该按钮可以关闭并执行计算类。多亏了 commonware 关于从哪里开始的提示,我才能在模拟器上完美地工作。然后我把它加载到我的 HTC 愿望上进行测试,但它
如何让 v-for 以与以下 html 相同的形式显示表格数据: Name Price Product ID 目前我正在使用以下 vue v-for 代码(如下)
我是一名优秀的程序员,十分优秀!