一、內核調試方法簡單分析
1、addr2line: 解決oops錯誤
a -- oops消息
oops(也稱 panic),稱程序運行崩潰,程序崩潰后會產生oops消息。應用程序或內核線程的崩潰都會產生oops消息,通常發生oops時,系統不會發生死機,而在終端或日志中打印oops信息。
當使用NULL指針或不正確的指針值時,通常會引發一個 oops 消息,這是因為當引用一個非法指針時,頁面映射機制無法將虛擬地址映像到物理地址,處理器就會向操作系統發出一個"頁面失效"的信號。內核無法"換頁"到并不存在的地址上,系統就會產生一個"oops"。
oops 顯示發生錯誤時處理器的狀態,包括 CPU 寄存器的內容、頁描述符表的位置,以及其一些難理解的信息。這些消息由失效處理函數(arch/*/kernel/traps.c)中的printk 語句產生。較為重要的信息就是指令指針(EIP),即出錯指令的地址。
b -- 解決方法
arm-linux-addr2line 地址 -e vmlinux -f
將Pc地址轉換成對應的行號
2、通過printk打印信息
內核通過 printk() 輸出的信息具有日志級別,日志級別是通過在 printk() 輸出的字符串前加一個帶尖括號的整數來控制的,如 printk("<6>Hello, world!/n");。內核中共提供了八種不同的日志級別,在 linux/kernel.h 中有相應的宏對應。
#define KERN_EMERG "<0>" /* system is unusable */
#define KERN_ALERT "<1>" /* action must be taken immediately */
#define KERN_CRIT "<2>" /* critical conditions */
#define KERN_ERR "<3>" /* error conditions */
#define KERN_WARNING "<4>" /* warning conditions */
#define KERN_NOTICE "<5>" /* normal but significant */
#define KERN_INFO "<6>" /* informational */
#define KERN_DEBUG "<7>" /* debug-level messages */
所以 printk() 可以這樣用:
printk(KERN_INFO "Hello, world!/n");。
未指定日志級別的 printk() 采用的默認級別是 DEFAULT_MESSAGE_LOGLEVEL,這個宏在 kernel/printk.c 中被定義為整數 4,即對應KERN_WARNING。
在 /proc/sys/kernel/printk 會顯示4個數值(可由 echo 修改), 分別表示當前控制臺日志級別、未明確指定日志級別的默認消息日志級別、最?。ㄗ罡撸┰试S設置的控制臺日志級別、引導時默認的日志級別。
當 printk() 中的消息日志級別小于當前控制臺日志級別時,printk 的信息(要有/n符)就會在控制臺上顯示。但無論當前控制臺日志級別是何值,通過 /proc/kmsg (或使用dmesg)總能查看。另外如果配置好并運行了 syslogd 或 klogd,沒有在控制臺上顯示的 printk 的信息也會追加到 /var/log/messages.log 中。
char myname[] = "chinacodec/n";
printk(KERN_INFO "Hello, world %s!/n", myname);
上一篇:Exynos4412啟動過程分析
下一篇:Exynos4412 Uboot 移植(二)—— Uboot 啟動流程分析
推薦閱讀
史海拾趣
EHC公司自創立之初就專注于電子硬件的技術創新。在競爭激烈的電子市場中,EHC公司憑借其獨特的設計理念和先進的生產工藝,成功推出了一系列高性能、高可靠性的電子產品。這些產品不僅滿足了消費者對高品質電子產品的需求,也為EHC公司贏得了良好的市場口碑。隨著技術的不斷進步,EHC公司不斷推出創新產品,逐步鞏固了其在行業中的領先地位。
面對日益嚴重的環境問題,ECM Electronics Limited.積極響應國家節能減排的號召,將綠色發展和可持續發展作為企業的重要戰略。公司采用環保材料和節能技術,降低產品能耗和排放。同時,公司還積極參與環保公益活動,推動行業綠色發展。這些舉措不僅提升了公司的社會形象,也為公司的長期發展奠定了堅實的基礎。
EPCOS的前身是西門子松下有限公司(Siemens Matsushita Components),于1989年在德國慕尼黑成立。這家合資公司的誕生標志著西門子和松下兩大電子巨頭在電子元器件領域的強強聯合。通過整合雙方的技術和市場優勢,EPCOS迅速崛起為全球電子元器件市場的重要參與者。
臺灣豐賓(CapXon)公司創立于1980年,起初是一家專注于電容器研發與生產的小型電子元件制造商。在創始人的帶領下,公司憑借對技術的執著追求和對品質的嚴格把控,逐漸在電子行業中嶄露頭角。通過不斷的技術創新和產品優化,CapXon的電容器產品在市場上獲得了良好的口碑,為公司的發展奠定了堅實的基礎。
隨著電子行業的競爭加劇,Chip Technologies Inc面臨著來自各方面的挑戰。為了應對這些挑戰,公司及時調整了發展策略,加大了在研發和市場拓展方面的投入。同時,公司還加強了內部管理,提升了生產效率和質量水平。這些舉措使得公司在激烈的市場競爭中保持了穩健的發展態勢。
在制藥工業中,Eclipse Magnetics的磁選機技術得到了廣泛應用。通過與制藥企業的合作,Eclipse Magnetics成功解決了制藥過程中可能存在的金屬污染問題。這種合作不僅提升了制藥企業的產品質量,也進一步鞏固了Eclipse Magnetics在電子行業的地位。
不要用數字濾波,這個我已經做了。不管是換芯片,還是調整時序,都可以。 有意思的請聯系我,我在沙坪壩。QQ:3487317 TEL:13883677969… 查看全部問答∨ |
這樣的. 看了LINK GUIDE,還是對分散加載有些疑問 比如一個scf如下 LREGION_test 0x0 { EREGION_1 0x0 0x1000 { boot.o(INIT,First) &n ...… 查看全部問答∨ |
[菇房培養應用方案] [食用菌養殖現代化技術] [蘑菇房工廠化技術方案書] 溫度因素溫度是環境條件的諸多因素中最為活躍的因素,也是對食用菌菌種生產、生產和使用影響作用最大的因素。任何種類、任何品種菌絲生長都有其生長溫度范圍 ...… 查看全部問答∨ |
|
replyreload += \',\' + 1653369; DACs, DDSs, PLLs, and Clock Distribution 由于本份材料是英文版的,有需要的請回復下載,分為四個帖子發布。目錄如下 Timson,如果您要查看本帖隱藏內容請回復 … 查看全部問答∨ |
|
路徑什么的應該都設置好了,編譯時也沒問題,可是右鍵使用“go to define xxx”的時候就出現[backcolor=rgba(255, 255, 255, 0.796875)]Source Browser: \'xxx\' - undefined Definition/Reference !這個對話框!不知道是怎么回事,還望各位賜教! ...… 查看全部問答∨ |