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上...