首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C++在Android上调试代码?

如何使用C++在Android上调试代码?
EN

Stack Overflow用户
提问于 2013-03-11 20:29:34
回答 2查看 2.4K关注 0票数 2

我在PC上写了一些视频流(C++),现在我尝试在Android上实现相同的跨平台部分。我对NDK“玩得够多了”,也知道如何编译和集成C代码和安卓(又名JNI)。

问题是,有时我的应用程序会崩溃,而且正如您所知,Android并没有指出代码在哪里失败(在C/C++部分中)。

视频流代码有很多库,比如说,开放源码部分,我用它来保存日志--这不是个好主意。我使用Eclipse,如何调试C++代码,或者Eclipse是否有任何插件要调试?

非常感谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-11 21:14:31

为了记录内容并在Android的logcat中看到它,我有一个简单的类:

代码语言:javascript
复制
#ifndef LOG_H_
#define LOG_H_

#include <android/log.h>

#define LOGD(LOG_TAG, ...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(LOG_TAG, ...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define LOGV(LOG_TAG, ...) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__)
#define LOGW(LOG_TAG, ...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__)
#define LOGE(LOG_TAG, ...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__)

#endif /* LOG_H_ */

你可以这样使用它:

代码语言:javascript
复制
LOGI("YourClassTag","let's print some stuff: %i, %s", 4, "I'm a string");

要获得更多有关一些崩溃的信息,您可以尝试使用adb启用JNICheck

如果您有一个常规设备,可以使用以下命令: 亚洲开发银行壳牌公司debug.checkjni 1 这不会影响已经运行的应用程序,但从那时开始启动的任何应用程序都将启用CheckJNI。(将属性更改为任何其他值,否则重新启动将再次禁用CheckJNI。)在本例中,下次应用程序启动时,您将在logcat输出中看到类似的内容: D延迟启用CheckJNI

票数 3
EN

Stack Overflow用户

发布于 2013-03-12 14:25:52

用于本机代码的GDB (GNU调试器)可从Android2.2 (SDK级别8)开始使用。

在命令行中使用选项NDK_DEBUG=1重新生成NDK代码。启动应用程序。然后从Windows或Cygwin命令行调用“ndk”命令,而项目下的jni文件夹是当前的。你会得到一个GDB控制台。键入c并按Enter键继续程序执行(当GDB连接时它会暂停)。

但这并不是为了精神上的弱者。GDB以其简洁的界面而闻名。但是,至少在崩溃发生时,它会为崩溃提供堆栈回溯( bt命令)。

您也可以将GDB连接到运行在早期版本Android上的进程,但是这个过程要复杂得多。

GDB引用是这里

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15347994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档