如何將C 的標準輸出列印到logcat中

2021-06-20 08:50:41 字數 2703 閱讀 5230

logcat命令學習好文章:

一、 如何將c++的標準輸出列印到logcat中

在default狀態下呼叫printf等std c/c++介面輸出的log不會被列印到eclipse的logcat中,

但是android提供了__android_log_print這個函式可以將log重定向到eclipse的logcat中. 1)

在對應的mk檔案中加入:local_ldlibs := -llog

2)在要使用log的cpp檔案中加入:

#include

使用方法如下

;__android_log_print(android_log_debug,"tag",__va_args__)

android_log_debug: log

的level

tag

:module

的tag

__va_args__:

格式化引數列表

例子:__android_log_print(android_log_debug,"libairplay",  "service uri : %s", "

www.163.com.video.xixi.mp4

");

3)直接使用並不是個好的想法,如果能夠可以和eclipse一樣實現分等級列印,那還不錯;實現如下:

#define logv(...)__android_log_print(android_log_verbose, "tag", __va_args__)   // verbose

#define logd(...) __android_log_print(android_log_debug , "tag", __va_args__)    // debug

#define logi(...) __android_log_print(android_log_info  , "tag",__va_args__)          // info

#define logw(...) __android_log_print(android_log_warn  , "tag", __va_args__)    //warn

#define loge(...) __android_log_print(android_log_error  , "tag",__va_args__)      // error

注意:括號中是省略號,不用改為引數.

在需要的地方直接使用

logv(「

www.163.com.video.xixi.mp4

」);

或者logd(「

www.163.com.video.xixi.mp4

」); 就好

4)使用以上的函式列印出的log會出現在eclipse中(前提是:

devices

已經和pc adb connect

).

其他資料:

如何在shell下將printf列印的資訊定向到logcat中:

touch /data/local.prop

vi local.prop   輸入log.redirect=true 重啟

logcat stdout:* stderr:*  *:s

之後就可以看到printf的輸出了

或者

adb shell stop  

adb shell setprop log.redirect-stdio true

adb shell start

二、 如何輸出jni 介面中logv 資訊。

在除錯android cts問題時, isieffectcommandsecure 介面中alogv("transact status: %d", status);

不會被列印, 看了下面文章才明白。

android的編譯引數中,加入了-dndebug,也就是預設是no debug的,當然還需要log_ndebug log_nidebug log_nddebug這三個巨集設定。

當-dndebug被打上後,預設alogv會被禁止。

在log.h中可以看到

#ifndef log_ndebug

#ifdef ndebug

#define log_ndebug 1

#else

#define log_ndebug 0

#endif

#endif

#ifndef alogv

#define __alogv(...) ((void)alog(log_verbose, log_tag, __va_args__))

#if log_ndebug

#define alogv(...) do } while (0)

#else

#define alogv(...) __alogv(__va_args__)

#endif

#endif

因此, 可以在當前檔案的最前面 加入 如下定義, 這樣就可以輸出

開啟alogv: #define log_ndebug 0

如何將控制台資訊列印到指定檔案中?

首先建立列印流物件 printstream printstream new printstream filepath 然後將流物件交給系統輸出 system.setout printstream 最後,任意的system.out.print 輸出的內容都會列印在filepath下,控制台不再顯示列印...

java 如何將捕獲的異常詳細資訊列印到日誌

本文不概述如何列印日誌,本文概述如何將捕獲的異常詳細資訊列印到日誌進行輸出,方便定位問題。首先定義乙個函式gettrace如下所示 public static string gettrace throwable t 然後在catch 塊中新增如下 try xx catch exception e d...

c 中如何將uint8 t按數字輸出

多簡單乙個事,找了半天才發現正確方法。有時候有乙個位元組的數,比如cv mat裡的畫素值,想按整數輸出。但是如果直接static cast是不行的,因為uint8 t事實上是unsigned char的type define,所以行為像char一樣,列印出來也是字元。然後stackoverflow上...