android.mk
LOCAL_SHARED_LIBRARIES := libc libcutils liblog libutilscallstack
OBJS += MyCallStack.cpp xxx.c vvv.c kkk.c
MyCallStack.cpp的内容:
#include <utils/CallStack.h>
extern "C" void dumping_callstack();
void dumping_callstack(){
android::CallStack stack;
stack.update();
//xxx
stack.log("callstack");
}
在需要跟踪的c文件中:
extern void dumping_callstack();
/vendor/bin/hw/wpa_supplicant (dumping_callstack+28)
04-27 20:27:08.495 2767 2767 D callstack: #01 pc 000b4549 /vendor/bin/hw/wpa_supplicant (wpa_supplicant_event+24)
04-27 20:27:08.495 2767 2767 D callstack: #02 pc 000cb377 /vendor/bin/hw/wpa_supplicant (send_scan_event+418)
04-27 20:27:08.495 2767 2767 D callstack: #03 pc 000c9b8d /vendor/bin/hw/wpa_supplicant (do_process_drv_event+2652)
04-27 20:27:08.495 2767 2767 D callstack: #04 pc 000c90f7 /vendor/bin/hw/wpa_supplicant (process_global_event+218)
04-27 20:27:08.495 2767 2767 D callstack: #05 pc 000096b1 /system/lib/vndk-28/libnl.so (nl_recvmsgs_report+532)
04-27 20:27:08.495 2767 2767 D callstack: #06 pc 000097bb /system/lib/vndk-28/libnl.so (nl_recvmsgs+2)
04-27 20:27:08.495 2767 2767 D callstack: #07 pc 000c38f9 /vendor/bin/hw/wpa_supplicant (wpa_driver_nl80211_event_receive+20)
04-27 20:27:08.495 2767 2767 D callstack: #08 pc 0001ee69 /vendor/bin/hw/wpa_supplicant (eloop_sock_table_dispatch+60)
04-27 20:27:08.495 2767 2767 D callstack: #09 pc 0001ecdb /vendor/bin/hw/wpa_supplicant (eloop_run+486)
04-27 20:27:08.495 2767 2767 D callstack: #10 pc 000b1fcf /vendor/bin/hw/wpa_supplicant (wpa_supplicant_run+90)
04-27 20:27:08.495 2767 2767 D callstack: #11 pc 000bbb11 /vendor/bin/hw/wpa_supplicant (main+712)
04-27 20:27:08.495 2767 2767 D callstack: #12 pc 0008bc15 /system/lib/libc.so (__libc_init+48)
void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
union wpa_event_data *data)
{
struct wpa_supplicant *wpa_s = ctx;
int resched;
dumping_callstack();