如何在android native编程中使用logCat

别只会看Logcat了!用BugReport揪出Android应用“神秘死亡”的5个关键日志 本文深入解析如何利用Android的BugReport工具精准定位应用崩溃原因,替代传统的Logcat日志分析。通过五大关键日志标记(如am_proc_died、ApplicationExitInfo等),开发者可以系统性地诊断应用被杀的根本原因,包括内存压力、ANR或Native崩溃等场景,并提供实战案例和高级分析工具链。 阅读详情
转自:http://archive.cnblogs.com/a/1584120/

Android NDK发布后,java+C的编程方式成为android上性能编程的首选。
但在C中调试困难,因此能使用logcat成为必须的要求。

关于在Native代码中使用logcat,网上有很多说法,大部分有所欠缺,有的根本是错的。

要使用logcat,首先在代码中要引入 log的头文件。
#include <android/log.h>

然后你可以简单的通过
__android_log_write(ANDROID_LOG_ERROR,"Tag","Message"); 方法向logcat输出。
log 级别有很多  :
    ANDROID_LOG_UNKNOWN,
    ANDROID_LOG_DEFAULT,   
    ANDROID_LOG_VERBOSE,
    ANDROID_LOG_DEBUG,
    ANDROID_LOG_INFO,
    ANDROID_LOG_WARN,
    ANDROID_LOG_ERROR,
    ANDROID_LOG_FATAL,
    ANDROID_LOG_SILENT,

这样写完以后,如果直接编译,就会报 __android_log_write 方法undefined.
怎么回事呢?关键是在设置编译选项上面。
在Android.mk文件里,可以指定一个LOCAL_LDLIBS的参数。如果不指定,那么编译的时候,只会引入默认的几个重要的lib,比如libc之类的。
如果要用log,那就要把 liblog给引进来。
网上很多的写法是 LOCAL_LDLIBS := -llog ,这在build static lib的时候没什么问题。如果是build shared lib,就会报个 cannot find -llog的错误。意思是找不到liblog.so这个库文件。
因此需要改成 LOCAL_LDLIBS :=  -L$(SYSROOT)/usr/lib -llog 才可以正常编译。
其中-L参数是指定了搜索lib的路径。
下面是一个android.mk的内容的例子:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE    := TestNdkNetwork
LOCAL_SRC_FILES := HttpConnection.cpp
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)
别再只盯着logcat了!Android Crash分析,从Monkey测试到Tombstone的完整实战手册 本文提供了一套完整的Android Crash分析实战手册,从Monkey测试到Tombstone日志解析,帮助开发者系统化定位和解决应用崩溃问题。涵盖Native层崩溃逆向工程、Framework层死锁诊断以及内核级问题排查技巧,并分享防御性编程的最佳实践,助力提升应用稳定性。 阅读详情

相关推荐

使用Android NDK进行日志输出

当我们使用NDK编写本地代码时,通常会遇到需要输出日志的情况,以便在C/C++代码中进行调试和追踪。然而,当我们使用Android NDK进行本地代码开发时,我们需要使用一些不同的方法来输出日志信息。通过上述步骤,我们可以在NDK代码中输出日志信息,并通过Logcat进行查看和调试。使用适当的日志级别和信息内容,可以帮助我们更好地理解和追踪代码的执行过程,从而更高效地进行调试和排查问题。在Android开发中,我们经常需要在应用程序中输出日志信息,以便在调试和排查问题时进行跟踪。在上述示例中,我们使用。

2301_79331230的博客 546

android ndk log

Android NDK发布后,java+C的编程方式成为android上性能编程的首选。但在C中调试困难,因此能使用logcat成为必须的要求。关于在Native代码中使用logcat,网上有很多说法,大部分有所欠缺,有的根本是错的。要使用logcat,首先在代码中要引入 log的头文件。#include 然后你可以简单的通过__android_log_write(AN

linux嵌入式驱动软件开发 5206

博泰车联网 Android Native 开发工程师深度解析:技术栈、挑战与面试指南

摘要:博泰车联网科技(上海)股份有限公司招聘Android Native软件开发工程师,负责安卓系统底层开发,包括开机动画、日志系统等模块。岗位要求5年以上C/C++开发经验,熟悉高通平台架构、Linux多线程编程及Android HAL层实现差异,有车载开发经验者优先。该职位需要深入理解安卓系统底层技术,具备性能优化和稳定性保障能力,能应对车载环境的特殊需求。文章从技术解析、开发挑战到面试准备进行全面探讨,为求职者提供岗位核心要求的深度解读和实用指导。

郑伟强dev的专栏 162

Android NDK开发(十二):JNI函数接口详解—异常处理

我们已经知道,JNI层可以有java异常 和 C/C++异常,那如何处理JNI层的两种异常呢?JNI层抛的C/C++异常在JNI层,通过C/C++的try...catch捕获并处理JNI层抛的java异常在JNI层,通过JNI定义的与异常相关的接口处理 或在java层,通过try...catch捕获并处理JNI层的C/C++异常,通过在JNI层 使用C/C++的try...catch捕获并处理,JNI并没有定义处理C/C++异常的接口,JNI不能处理C/C++异常;

u04160526 2158

通过薄膜太阳能电池中的热激电流量化陷阱状态

发光(led)和光伏(PV)器件的性能取决于光活性半导体材料的质量。由于材料杂质或在制造过程中在半导体材料中无意地引入缺陷,导致偏离最佳性能。这些缺陷被称为阱态,或简称“阱”,它是半导体带隙内的高能态。一般来说,陷阱的发生可能是由于材料杂质(在散装)或在不同材料层之间的界面。在有机半导体中,由于天然物质的无序性,阱态经常出现。在无机和杂化半导体(例如:杂化钙钛矿、硅……)中,晶界的存在是圈闭态的已知来源。由于陷阱产生的原因多种多样,它们对装置的影响也是多种多样的。由于载流子的多次捕获和释放事件,特别是浅阱的

FluximAG的博客 2848

C# 开发 WPS 插件实战:从环境搭建到功能实现(附完整代码)

本文提供了一份详尽的C#开发WPS插件实战指南,涵盖从环境搭建到功能实现的完整流程。通过COM技术,开发者可以创建自定义插件,为WPS Office扩展自动化功能,如文档处理与格式转换。文章包含核心概念解析、Ribbon界面集成、调试部署方法及完整代码示例,帮助开发者快速上手。

rust6ferris的博客 927

Docker环境下编译android源码|编译可运行xposed

前言 因为我的电脑是Ubuntu18的版本,成功编译xposed刷入手机之后无法启动,检查了所有的环境,没有问题,发现可能是Ubuntu系统的兼容库的问题,但是我不可能重新安装系统吧,毕竟有点蠢,所以最好的方式就是在docker的Ubuntu容器中编译,统一环境问题,也可以隔离环境平时 工作开发环境,下面开始操作 安装配置docker docker加速,采用对国人友好的镜像地址 通过修改daemo...

misty's technology stack 1085

新手必看:TwinCAT死活扫不到倍福CX5020?别慌,先检查这3个地方(附静态IP配置)

本文详细介绍了TwinCAT软件无法扫描到倍福CX5020控制器的常见问题及解决方案。从网络连通性检查、系统环境配置到静态IP设置,提供了一套完整的排查流程和优化建议,帮助新手快速解决通信问题,确保设备稳定运行。

weixin_27219587的博客 363

Android C/C++ native编程NDK开发中logcat的使用

在NDK开发过程中,C/C++层,需要对代码进行一些调试,日志打印是我们解决异常或崩溃的重要手段,这里我就简单介绍下日志打印三步走。

hnjzfwy的博客 880

SAN存储与协议,了解SCSI、FC和ISCSI

在前面我们介绍SAN存储及iSCSI协议的时候了解到SAN存储其实是一个CS架构的系统。存储系统本身就是整个系统的服务端。以IP-SAN(也就是基于iSCSI的SAN存储)为例,其整体架构如图1所示。 图1 CS架构 对于存储系统来说,通常是由专业的存储厂商提供,比较知名的如EMC、NetAPP、IBM和日立等等。国内存储厂商也迅速崛起,比较知名的如华为、宏杉、浪潮和同友等等。另外,还有一些小的存储厂商,他们往往集中在某个领域,比如专注文件系统或者块存储等等。 除了专业的存储设备外,其实Linux

shuningzhang的专栏 2684

从技术债红线到系统治理:透视 SAP Clean Core 中的 Level D

SAP推出的Clean Core分级体系将扩展风险划分为A到D四个等级,其中Level D代表最高风险类别,涉及直接修改标准代码、隐式增强、使用noAPI对象等不被推荐的做法。这些做法虽然短期见效快,但会带来升级冲突、数据完整性风险等长期问题。SAP强调治理重点不是完全消除经典ABAP,而是优先清理Level D对象,逐步向稳定接口迁移。典型案例显示,依赖内部细节的扩展往往在系统升级或云迁移时集中暴露出问题。企业应通过工具链持续监控Level D占比,将其纳入技术债管理范畴。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1063

如何在android C/C++ native编程(ndk)中使用logCat

http://bbs.theithome.com/simple/?t896.html.   最近在研究Android 2.3.3源代码的C/C++层,需要对代码进行一些调试,但是奇怪的是,直接添加LOGD("XXXXXXXX");,使用logcat却看不到任何输出,换成LOGI、LOGV、LOGW、LOGE也没有效果。于是在网上查找解决方法,经过几次试验,终于找到了,现在贴到下面备忘:

mdifferent的专栏 1326

【OpenClaw从入门到精通】第63篇:A股智能分析实战——用OpenClaw搭建个人量化研究助手(2026实测版)

2026年,OpenClaw已成为量化投研圈的现象级工具,八家头部券商密集发布专题研报力证其价值。传统量化投研面临技术门槛高、重复劳动多、策略迭代慢、非结构化数据处理弱四大痛点,而OpenClaw通过“AI智能体+金融Skill+量化API”的融合,实现了从数据获取、策略生成、回测验证到持仓监控的全流程自动化。本文基于2026年最新实测经验,完整呈现个人量化研究助手搭建:从阿里云部署、阿里云百炼API配置(含解析失败解决方案)、Tushare数据源接入,到PB-ROE价值选股、研报复现、自动化回测、持仓监控

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1058

在android C/C++ native编程(ndk)中使用logcat

最近在研究Android 2.2 源代码的C/C++层,需要对代码进行一些调试,但是奇怪的是,直接添加LOGD("XXXXXXXX");,使用logcat却看不到任何输出,换成LOGI、LOGV、LOGW、LOGE也没有效果。于是在网上查找解决方法,经过几次试验,终于找到了,现在贴到下面备忘: 第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog 第二步:在要使用LOG的

Tody Guo的专栏 5697

eCognition易康操作教程(一):如何利用eCognition易康软件进行影像分割之棋盘分割、四叉树分割、光谱差异分割

进程执行完成后,植被覆盖区域与裸地区域合并了。第三步:清除分割结果,点击“Image Objects”菜单栏,点击“Delete Level(s)”,选中“ResultLevel1”,点击”ok”删除棋盘分割结果。四叉树分割之后,有的正方形大一些,有的正方形小一些,大说明该区域的光谱特性更加均一,而小说明不太均一。Leve:选择运行算法的矢量层名称,这里选择四叉树分割算法得到的矢量层“ResultLevel2”。Image Layer weights:图层权重,这里设置为“1,1,1,1”。

蒹葭苍苍 4608

一篇文章带你搞定数学建模里的主成分分析(05年水质问题示例应用讲解含代码)

文章目录一、题目分析二、原理公式三、MATLAB实现某一地区的主成分分析四、MATLAB 实现所有地区28个月的综合分析五、注意 一、题目分析 对长江近两年多的水质情况做出定量的综合评价,并分析各地区水质的污染状况 考虑到各指标之间可能存在一定的相关性,选用主成分分析法对长江流域主要城市水质检测报告进行分析,选取主成分,并把主成分得分按照方差贡献率加权求和,得到每个地区的污染综合评价指数,进而可以计算每个月长江流域的污染综合评价指数,对平均综合评价指数进行排序 二、原理公式 根据主成分分析的方法,分析长江沿

南淮北安的博客 2624

在android C/C++ native编程(ndk)中使用logCat

在Android 2.3.3源代码的C/C++层,需要对代码进行一些调试,但是奇怪的是,直接添加LOGD("XXXXXXXX");,使用logcat却看不到任何输出,换成LOGI、LOGV、LOGW、LOGE也没有效果。于是在网上查找解决方法,经过几次试验,终于找到了,现在贴到下面备忘: 第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog 第二步:在要使用LOG的cpp

andy_android的专栏 1407

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

c++ log 打印android_在android C/C++ native编程(ndk)中使用logCat

最近在研究Android 2.3.3源代码的C/C++层,需要对代码进行一些调试,但是奇怪的是,直接添加LOGD("XXXXXXXX");,使用logcat却看不到任何输出,换成LOGI、LOGV、LOGW、LOGE也没有效果。于是在网上查找解决方法,经过几次试验,终于找到了,现在贴到下面备忘:第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog第二步:在要使用LOG的cp...

weixin_29197835的博客 413

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

在android C/C++ native编程(ndk)中使用logCat学习记录

第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog 第二步:在要使用LOG的cpp文件中加入: #include #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "MY_TAG", __VA_ARGS__) 第三步:这样就可以使用了:LOGD("测试信息");

fhx123fhx123的专栏 537

android NDK开发中 在native代码试用log

android NDK native c logcat

imhmk的专栏 1021

NDK log

ndroid NDK发布后,java+C的编程方式成为android上性能编程的首选。 但在C中调试困难,因此能使用logcat成为必须的要求。 关于在Native代码中使用logcat,网上有很多说法,大部分有所欠缺,有的根本是错的。 要使用logcat,首先在代码中要引入 log的头文件。 #include 然后你可以简单的通过 __android_log_write(ANDRO

guapia的专栏 448
上一篇: 在android 输出log 信息 用于调试
下一篇: Android LogCat使用详解
learnerz
博客等级 码龄16年 51粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值