Lauterbach TRACE32技巧小集


1. TRACE32中實現類container_of功能

假設現在我只知道一個全局變量成員tv2的地址,類型是tvec_base。我想知道這個全局變量的地址怎么辦?

struct tvec_base {
    spinlock_t lock;
    struct timer_list *running_timer;
    unsigned long timer_jiffies;
    unsigned long next_timer;
    struct tvec_root tv1;
    struct tvec tv2;
    struct tvec tv3;
    struct tvec tv4;
    struct tvec tv5;
} ____cacheline_aligned;

1.1 計算tv2到結構體頭的偏移量:&((struct tvec_base*)0x0)->tv2

可以得出tv2到結構體頭的偏移量是0x080C

1.2 已知tv2的地址是0xC065C0CC,此地址減去偏移量就是tvec_bases的地址:(struct tvec_base *)(0xC065C0CC-0x080C)

如下就dump出了tvec_bases這個變量的內容。

2. 將內核變量導出到本地文件,如log_buf

2.1 首先找到Linux內核存放log的變量log_buf地址

2.2 執行data.SAVE.Binary D:\log.bin 0xC064B6AC++0x10000,dump從0xC064B6AC開始大小為0x10000一段內存到D:\log.bin中。

可以使用工具打開D:\log.bin文件。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM