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

Chinaunix

標(biāo)題: 求助 如何分析crash,有沒(méi)有專(zhuān)門(mén)相關(guān)的論壇或者網(wǎng)站? [打印本頁(yè)]

作者: npuazm    時(shí)間: 2012-07-30 18:08
標(biāo)題: 求助 如何分析crash,有沒(méi)有專(zhuān)門(mén)相關(guān)的論壇或者網(wǎng)站?
如何分析crash,有沒(méi)有專(zhuān)門(mén)相關(guān)的論壇或者網(wǎng)站?
作者: lenky0401    時(shí)間: 2012-07-30 18:38
最近準(zhǔn)備了將近100頁(yè)P(yáng)PT,在公司分3課時(shí)來(lái)專(zhuān)門(mén)培訓(xùn)如何查內(nèi)核crash&宕機(jī)問(wèn)題。

查內(nèi)核crash與查應(yīng)用程序crash沒(méi)什么差別,無(wú)非就是內(nèi)核crash的工具少一點(diǎn)或者說(shuō)使用起來(lái)麻煩一點(diǎn)(比如kgdb對(duì)gdb),所以相關(guān)手段原始一點(diǎn),比如一般是objdump反匯編后看匯編代碼。要看匯編,那么AT&T匯編指令,函數(shù)調(diào)用棧幀就是最基本的;然后是內(nèi)核的一系列概念,比如上下文(應(yīng)用程序不用考慮這個(gè),但內(nèi)核就要考慮當(dāng)前是進(jìn)程上下文還是中斷上下文,比如中斷上下文調(diào)用睡眠函數(shù))、棧(應(yīng)用層就一個(gè)棧,內(nèi)核有內(nèi)核棧、中斷棧、X86_64里特別的中斷還有額外的棧)、加鎖(死鎖宕機(jī))、同步(多核情況下,一個(gè)CPU把某公共資源釋放了,另外一個(gè)CPU還去使用,宕機(jī))、業(yè)務(wù)邏輯(異常情況下的主動(dòng)宕機(jī),BUG()、BUG_ON(),類(lèi)似于A(yíng)C下的assert)。

用google搜索linux oops開(kāi)始入門(mén)吧:比如http://www.linuxforu.com/2011/01/understanding-a-kernel-oops/


作者: lenky0401    時(shí)間: 2012-07-30 18:43
目前公司把該封的都封了,我也就只能來(lái)CU灌下水(要么只能上公司BBS去灌水),而且還不能說(shuō)得太細(xì),LZ還有啥想問(wèn)的,我回去上網(wǎng)再回,
作者: npuazm    時(shí)間: 2012-07-30 20:44
謝謝,樓上
我想問(wèn)問(wèn)當(dāng)你具體拿到一個(gè)core dump的時(shí)候,我想應(yīng)該會(huì)有一個(gè)大概得判斷
比如 是訪(fǎng)問(wèn)內(nèi)存異常,或是watchdog所致,或者由于硬件的缺陷導(dǎo)致堆棧發(fā)生錯(cuò)誤,上面的比如是我的一些猜想。
請(qǐng)問(wèn)有這樣基本的判斷嗎?如果有這樣的基本的判斷,又是怎么得出來(lái)的呢?

作者: lenky0401    時(shí)間: 2012-07-30 21:41
呵呵 這種(watchdog、空指針訪(fǎng)問(wèn)、BUG主動(dòng)宕機(jī))你看到oops就能知道了 一般情況都有明確的字符串提示 內(nèi)核版本不同而不一樣 你弄幾個(gè)宕機(jī)示例看看打印的oops信息就知道了
作者: lenky0401    時(shí)間: 2012-07-30 21:41
內(nèi)核版本不同提示的字符串不一樣
作者: npuazm    時(shí)間: 2012-07-30 21:58
回復(fù) 5# lenky0401
怎么弄弄幾個(gè)宕機(jī)示例并查看打印的oops信息
我菜的很
ps 你給的例子很好,我剛才看過(guò)了


   
作者: embeddedlwp    時(shí)間: 2012-07-31 09:03
回復(fù) 6# lenky0401

lenky0401兄可以在CU開(kāi)個(gè)專(zhuān)題討論啊。


   
作者: npuazm    時(shí)間: 2012-08-01 12:21
回復(fù) 3# lenky0401


   
在使用cash的時(shí)候,
用list 命令的用法,比如

crash> list __i2c_board_list
c07f6d1c
df8af9e0
df8af9a0
df8af960
df8af920
df8af8e0
df8af8a0
df8af860
df8af820
df8af7e0
df8af7a0
df8af4e0
df8af4a0

而后
crash> struct i2c_devinfo df8af4a0
struct i2c_devinfo {
  list = {
    next = 0xc07f6d1c,
    prev = 0xdf8af4e0
  },
  busnum = 3,
  board_info = {
    type = "rmi_i2c\000\000\000\000\000\000\000\000\000\000\000\000",
    flags = 0,
    addr = 32,
    platform_data = 0xc07d5568,
    archdata = 0x0,
    irq = 0
  }
}

我想知道,有沒(méi)有相關(guān)的命令,把所有在list的設(shè)備的全部詳細(xì)信息都列出來(lái)?



作者: npuazm    時(shí)間: 2012-08-01 16:34
回復(fù) 2# lenky0401

如果已知數(shù)據(jù)結(jié)構(gòu),并且知道某一變量的某一成員的地址,假設(shè)知道 detected地址是c07f9f94,有沒(méi)有命令找到其他成員的地址,如怎么找到flags地址??


    struct i2c_client {
        unsigned short flags;                /* div., see below                */
        unsigned short addr;                /* chip address - NOTE: 7bit        */
                                        /* addresses are stored in the        */
                                        /* _LOWER_ 7 bits                */
        char name[I2C_NAME_SIZE];
        struct i2c_adapter *adapter;        /* the adapter we sit on        */
        struct i2c_driver *driver;        /* and our access routines        */
        struct device dev;                /* the device structure                */
        int irq;                        /* irq issued by device                */
        struct list_head detected;
};
作者: lofeng410    時(shí)間: 2012-12-27 23:56
回復(fù) 10# npuazm

有找到方法嗎?
   




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2