亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 8988 | 回復: 8
打印 上一主題 下一主題

[其他] 根據(jù)linux Oops定位錯誤代碼行 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-05-16 15:17 |只看該作者 |倒序瀏覽
本帖最后由 zhuqing_739 于 2012-05-16 15:18 編輯

這幾天一直在調試atmel at91sam9x25的串口,用著用著總會導致Oops,Oops內(nèi)容如下:
[ 1023.510000] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 1023.520000] pgd = c0004000
[ 1023.520000] [00000000] *pgd=00000000
[ 1023.520000] Internal error: Oops: 17 [#1]
[ 1023.520000] last sysfs file: /sys/devices/virtual/misc/at91flash/dev
[ 1023.520000] Modules linked in: at91flash at91gpio at91mc323 ds18b20 at91adc
[ 1023.520000] CPU: 0    Tainted: G        W    (2.6.39 #35)
[ 1023.520000] PC is at atmel_tasklet_func+0x104/0x690
[ 1023.520000] LR is at atmel_tasklet_func+0x10/0x690

[ 1023.520000] pc : [<c01a33ac>]    lr : [<c01a32b8>]    psr: 20000013
[ 1023.520000] sp : c7825f58  ip : 60000093  fp : 00000000
[ 1023.520000] r10: 00000006  r9 : 00000000  r8 : 0000000a
[ 1023.520000] r7 : 00000000  r6 : c7824000  r5 : c78a2484  r4 : c03c0cb8
[ 1023.520000] r3 : 0000004c  r2 : 0000004c  r1 : 60000013  r0 : 00000001
[ 1023.520000] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
[ 1023.520000] Control: 0005317f  Table: 27b40000  DAC: 00000017
[ 1023.520000] Process ksoftirqd/0 (pid: 3, stack limit = 0xc7824270)
[ 1023.520000] Stack: (0xc7825f58 to 0xc7826000)
[ 1023.520000] 5f40:                                                       00000001 c7824000
[ 1023.520000] 5f60: 00000100 0000000a 00000000 00000006 c7825f8c 00000000 00000001 c7824000
[ 1023.520000] 5f80: 00000100 0000000a 00000006 c0045cf8 c03b995c c00461d8 c7aa6ae0 00000000
[ 1023.520000] 5fa0: 60000093 00000000 c7824000 c0046274 00000013 00000000 00000000 c00462e0
[ 1023.520000] 5fc0: 00000000 c7819f70 00000000 c00570e0 00000000 00000000 00000000 00000000
[ 1023.520000] 5fe0: c7825fe0 c7825fe0 c7819f70 c0057060 c0030b14 c0030b14 ffffffff ffffffff
[ 1023.520000] [<c01a33ac>] (atmel_tasklet_func+0x104/0x690) from [<c0045cf8>] (tasklet_action+0x84/0xe
[ 1023.520000] [<c0045cf8>] (tasklet_action+0x84/0xe from [<c00461d8>] (__do_softirq+0x88/0x124)
[ 1023.520000] [<c00461d8>] (__do_softirq+0x88/0x124) from [<c00462e0>] (run_ksoftirqd+0x6c/0x12
[ 1023.520000] [<c00462e0>] (run_ksoftirqd+0x6c/0x12 from [<c00570e0>] (kthread+0x80/0x8
[ 1023.520000] [<c00570e0>] (kthread+0x80/0x8 from [<c0030b14>] (kernel_thread_exit+0x0/0x
[ 1023.520000] Code: 1a000002 e59f057c e59f157c ebfa3d49 (e5973000)
[ 1023.710000] ---[ end trace 786b41cd25d3b661 ]---
[ 1023.710000] Kernel panic - not syncing: Fatal exception in interrupt
[ 1023.720000] [<c0034b10>] (unwind_backtrace+0x0/0xe0) from [<c02a8af8>] (panic+0x50/0x170)
[ 1023.720000] [<c02a8af8>] (panic+0x50/0x170) from [<c0032e00>] (die+0x184/0x1c4)
[ 1023.730000] [<c0032e00>] (die+0x184/0x1c4) from [<c0035aa8>] (__do_kernel_fault+0x64/0x84)
[ 1023.740000] [<c0035aa8>] (__do_kernel_fault+0x64/0x84) from [<c0035c7c>] (do_page_fault+0x1b4/0x1c
[ 1023.750000] [<c0035c7c>] (do_page_fault+0x1b4/0x1c from [<c002a240>] (do_DataAbort+0x30/0x9
[ 1023.760000] [<c002a240>] (do_DataAbort+0x30/0x98) from [<c002f86c>] (__dabt_svc+0x4c/0x60)
[ 1023.770000] Exception stack(0xc7825f10 to 0xc7825f58)
[ 1023.770000] 5f00:                                     00000001 60000013 0000004c 0000004c
[ 1023.780000] 5f20: c03c0cb8 c78a2484 c7824000 00000000 0000000a 00000000 00000006 00000000
[ 1023.790000] 5f40: 60000093 c7825f58 c01a32b8 c01a33ac 20000013 ffffffff
[ 1023.790000] [<c002f86c>] (__dabt_svc+0x4c/0x60) from [<c01a33ac>] (atmel_tasklet_func+0x104/0x690)
[ 1023.800000] [<c01a33ac>] (atmel_tasklet_func+0x104/0x690) from [<c0045cf8>] (tasklet_action+0x84/0xe8)
[ 1023.810000] [<c0045cf8>] (tasklet_action+0x84/0xe8) from [<c00461d8>] (__do_softirq+0x88/0x124)
[ 1023.820000] [<c00461d8>] (__do_softirq+0x88/0x124) from [<c00462e0>] (run_ksoftirqd+0x6c/0x128)
[ 1023.830000] [<c00462e0>] (run_ksoftirqd+0x6c/0x128) from [<c00570e0>] (kthread+0x80/0x88)
[ 1023.840000] [<c00570e0>] (kthread+0x80/0x88) from [<c0030b14>] (kernel_thread_exit+0x0/0x8)
注意上述紅色的地方。
下面就來顯示如何定位出出錯代碼行:
1.首先,編譯時打開complie with debug info選項,步則如下
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig

進入 Kernel hacking

選擇 Compile the kernel with debug info
然后,保存,退出。
接著 make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
編譯, 等編譯完成。
2.利用arm-none-linux-gnueabi-gdb 調試,如下:
arm-none-linux-gnueabi-gdb vmlinux

對應著Oops 消息里面的這一行
[ 1023.520000] LR is at atmel_tasklet_func+0x10/0x690
在gdb下鍵入命令 : l *at atmel_tasklet_func+0x10

這樣就找到了出錯的代碼行。在這里鄙視一下atmel提供的內(nèi)核,竟然還有bug,fuck it!
從這里可以看出是由于串口的dma導致Oops的,于是我去掉了串口的dma傳輸。方法如下:

去掉之后還沒有發(fā)現(xiàn)上述的Oops出現(xiàn)。

評分

參與人數(shù) 1可用積分 +4 收起 理由
瀚海書香 + 4 贊一個!

查看全部評分

論壇徽章:
0
2 [報告]
發(fā)表于 2012-05-16 15:23 |只看該作者
CROSS_COMPILE 的 objdump不行么?

論壇徽章:
0
3 [報告]
發(fā)表于 2012-05-16 15:28 |只看該作者
atmel DMA 傳輸,是什么bug?不能在fix掉嗎?
感謝樓主的share

論壇徽章:
6
金牛座
日期:2013-10-08 10:19:10技術圖書徽章
日期:2013-10-14 16:24:09CU十二周年紀念徽章
日期:2013-10-24 15:41:34獅子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亞洲杯之阿聯(lián)酋
日期:2015-05-09 14:36:15
4 [報告]
發(fā)表于 2012-05-16 15:35 |只看該作者
回復 1# zhuqing_739
不錯,多謝分享!
串口傳輸?shù)拇_是不同需要DMA的。

   

論壇徽章:
2
CU十二周年紀念徽章
日期:2013-10-24 15:41:34處女座
日期:2013-12-27 22:22:41
5 [報告]
發(fā)表于 2012-05-16 15:44 |只看該作者
addr2line.

論壇徽章:
2
CU十二周年紀念徽章
日期:2013-10-24 15:41:34處女座
日期:2013-12-27 22:22:41
6 [報告]
發(fā)表于 2012-05-16 15:45 |只看該作者
最新內(nèi)核么?LZ跟一跟啊,這么好一個BUG。

論壇徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
7 [報告]
發(fā)表于 2012-05-17 09:56 |只看該作者
回復 1# zhuqing_739
有時不一定內(nèi)核代碼有問題,DMA需要用物理地址,配置是這一點一定要注意。如果再深入一步, 找到DMA的問題,那么對DMA也能完全懂了。

   

論壇徽章:
0
8 [報告]
發(fā)表于 2012-05-17 14:53 |只看該作者
不錯,學習

論壇徽章:
0
9 [報告]
發(fā)表于 2012-05-18 17:32 |只看該作者
我用的比較搓的方法,需要對反匯編看的比較熟才行。
就是把導致oops的.ko拖到 ida里,然后搜索一下oops打印的 函數(shù)名+偏移,定位到匯編行,然后看一眼附近的匯編代碼,再看源碼。。。。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP