



免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
HPUX下core文件總結(jié)當(dāng)系統(tǒng)中一些進(jìn)程由于收到一些信號而非正常結(jié)束時,系統(tǒng)便建立一個core文件(是一個內(nèi)存映像,同時加上調(diào)試信息),記錄進(jìn)程當(dāng)時的一些信息,包括進(jìn)程狀態(tài)、數(shù)據(jù)以及硬件寄存器的值等。1. 刪除core文件在這些core文件沒有用的時候,可以考慮刪除它們。core文件的刪除,應(yīng)該首先確認(rèn)要刪除的core文件是否還有使用價值,可通過file core命令查看是由哪些進(jìn)程產(chǎn)生的,在確認(rèn)對調(diào)試程序沒用的時候再進(jìn)行刪除(find / -name core -exec rm ;),也可以通過下面的命令來刪除10天內(nèi)未存取過的core文件(find / -name core atime +10 exec rm f ;)# file /root/core/root/core: core file from opcuiadm2. 查看core文件的內(nèi)容進(jìn)去后打 where, 就可以 show 出你是在程序哪一行當(dāng)?shù)舻? 還有在當(dāng)?shù)魰r在哪個 function 里, 這個 function是被哪個 function 所 call 的, 而這個 function 又是被哪個function所 call 的. 一直到 main()# gdb -c /root/core.Core was generated by opcuiadm.Program terminated with signal 11, Segmentation fault.#0 0xc020bbe8 in ()(gdb) where#0 0xc020bbe8 in ()warning: Attempting to unwind past bad PC 0xc020bbe8 #1 0xc0059228 in ()#2 0xc0059228 in ()#3 0xc0059228 in ()Cannot access memory at address 0x360000(gdb) q3.core文件的生成開關(guān)和大小限制使用ulimit -c命令可查看core文件的生成開關(guān)。若結(jié)果為0,則表示關(guān)閉了此功能,不會生成core文件。使用ulimit -c filesize命令,可以限制core文件的大?。╢ilesize的單位為kbyte)-c指定修改core文件的大小。若ulimit -c unlimited,則表示core文件的大小不受限制。如果生成的信息超過此大小,將會被裁剪,最終生成一個不完整的core文件。再gdb調(diào)試的時候,會提示出錯。# ulimit -c4194303#ulimit -c 1000#ulimit -c1000#ulimit -c unlimitedUnlimited4.core設(shè)置.1 后臺Core文件獲取方法 Solaris環(huán)境Core文件收集方法: 1) 修改Coreadm配置參數(shù)。當(dāng)某個進(jìn)程發(fā)生coredump后,Solaris操作系統(tǒng)自動將core文件轉(zhuǎn)儲到指定路徑。 請按如下范例步驟打開core文件轉(zhuǎn)儲開關(guān): coreadm -d global 刪除# coreadm -e core.%f.%pusage:coreadm -g pattern -I patterncoreadm -e global | process | global-setid | proc-setid coreadm -d global | process | global-setid | proc-setid coreadm -p pattern -P enable | disable pid . coreadm -p pattern -P enable|disable -E command argumentsrootBMS105 # coreadm -e global rootBMS105 # coreadm -e global-setid rootBMS105 # coreadm -e proc-setid rootBMS105 # coreadm -e process rootBMS105 # coreadm -e log rootBMS105 # coreadm -g /opt/corefiles/core.%f.%p 設(shè)置完成后,查看coreadm狀態(tài),當(dāng)與以下內(nèi)容一致時,表示配置成功 rootBMS105 # coreadm 全局(主存儲器)信息轉(zhuǎn)儲文件模式: /opt/corefiles/core.%f.%p 初始(主存儲器)信息轉(zhuǎn)儲文件模式: core 全局(主存儲器)信息轉(zhuǎn)儲: enabled 每進(jìn)程的(主存儲器)信息轉(zhuǎn)儲: enabled 全局 setid (主存儲器)信息轉(zhuǎn)儲: enabled 每進(jìn)程的 setid (主存儲器)信息轉(zhuǎn)儲: enabled 全局(主存儲器)信息轉(zhuǎn)儲記錄: enabled 2) 在/opt/corefiles中尋找相應(yīng)的core文件,使用pstack和mdb命令將其轉(zhuǎn)儲為txt文件(一般core文件比較大,不易附在問題單中,因此需要將其轉(zhuǎn)儲為txt文檔) 注:pstack與mdb的區(qū)別: pstack 能看到全部堆棧信息; 定位多線程導(dǎo)致的死鎖或異常很有用 mdb看到的是棧頂信息; 普通的錯誤用mdb來得更直接; 例一:使用pstack將UA5000G后臺的core文件轉(zhuǎn)儲為txt文檔 rootN2000Server106 # pwd /opt/corefiles rootN2000Server106 # pstack core.Ua5000GDm.2144.1159153487 Ua5000GDm1.txt rootN2000Server106 # ls Ua5000GDm1.txt core.Ua5000GDm.2144.1159153487 例二:使用mdb將UA5000G后臺的core文件轉(zhuǎn)儲為txt文檔 rootN2000Server106 # pwd /opt/corefiles rootN2000Server106 # mdb core.Ua5000GDm.2144.1159153487 Ua5000GDm2.txt rootN2000Server106 # ls Ua5000GDm1.txt Ua5000GDm2.txt core.Ua5000GDm.2144.1159153487 對于后臺coredump問題,需要分別在問題單中附上pstack和mdb轉(zhuǎn)儲的txt文件,以便開發(fā)定位。 何謂core文件 當(dāng)一個程序崩潰時,在進(jìn)程當(dāng)前工作目錄的core文件中復(fù)制了該進(jìn)程的存儲圖像。core文件僅僅是一個內(nèi)存映象(同時加上調(diào)試信息),主要是用來調(diào)試的。1、unix core文件 有時自己的應(yīng)用程序發(fā)生錯誤,比如訪問非法內(nèi)存地址等,就會造成CoreDump,這時系統(tǒng)將相關(guān)的內(nèi)存映像存為core文件,以便分析。用dbx,gdb,ladebug等工具可以對core文件進(jìn)行分析,能夠定位到程序的哪一行出錯。不一定只有供應(yīng)商的工程師才搞得明白。UNIX下core文件的分析 1、lquerypv -h core文件 6b1,可以查看到Core文件中報錯的進(jìn)程名字。例如:lquerypv -h core_20041210 6b1得到如下的結(jié)果,2、采用file命令,直接 file core文件 即可$ file core_20041210core_20041210 AIX core file fulldump 32-bit, exe_CustInfo3、可以采用strings命令,直接將core文件中的所有垃圾提示去掉,只提取有用的信息,比如采用:strings 文件 | awk if (NR /dev/null 2&1但是在開發(fā)過程中有時為了調(diào)試問題,還是需要在特定的用戶環(huán)境下打開core文件產(chǎn)生的設(shè)置在用戶的/.bash_profile里加上ulimit -c unlimited來讓特定的用戶可以產(chǎn)生core文件如果ulimit -c 0 則也是禁止產(chǎn)生core文件,而ulimit -c 1024則限制產(chǎn)生的core文件的大小不能超過1024kb3. 設(shè)置Core Dump的核心轉(zhuǎn)儲文件目錄和命名規(guī)則/proc/sys/kernel/core_uses_pid可以控制產(chǎn)生的core文件的文件名中是否添加pid作為擴(kuò)展,如果添加則文件內(nèi)容為1,否則為0proc/sys/kernel/core_pattern可以設(shè)置格式化的core文件保存位置或文件名,比如原來文件內(nèi)容是core-%e可以這樣修改:echo /corefile/core-%e-%p-%t core_pattern將會控制所產(chǎn)生的core文件會存放到/corefile目錄下,產(chǎn)生的文件名為core-命令名-pid-時間戳以下是參數(shù)列表: %p - insert pid into filename 添加pid %u - insert current uid into filename 添加當(dāng)前uid %g - insert current gid into filename 添加當(dāng)前gid %s - insert signal that caused the coredump into the filename 添加導(dǎo)致產(chǎn)生core的信號 %t - insert UNIX time that the coredump occurred into filename 添加core文件生成時的unix時間 %h - insert hostname where the coredump happened into filename 添加主機(jī)名 %e - insert coredumping executable name into filename 添加命令名4. 使用core文件在core文件所在目錄下鍵入:gdb -c core它會啟動GNU的調(diào)試器,來調(diào)試core文件,并且會顯示生成此core文件的程序名,中止此程序的信號等等如果你已經(jīng)知道是由什么程序生成此core文件的,比如MyServer崩潰了生成core.12345,那么用此指令調(diào)試:gdb -c core MyServer以下怎么辦就該去學(xué)習(xí)gdb的使用了5. 一個小方法來測試產(chǎn)生core文件直接輸入指令:kill -s SIGSEGV $coreadm -p core.%f.%p擴(kuò)展的核心轉(zhuǎn)儲文件名如果啟用了全局核心轉(zhuǎn)儲文件目錄,則可使用下表中介紹的變量來區(qū)分 core 文件。變量名變量定義%d可執(zhí)行文件目錄名,最多包含 MAXPATHLEN 個字符%f可執(zhí)行文件名,最多包含 MAXCOMLEN 個字符%g有效組 ID%m計算機(jī)名 (uname -m)%n系統(tǒng)節(jié)點(diǎn)名 (uname -n)%p進(jìn)程 ID%t時間的十進(jìn)制值 (2)%u有效用戶 ID%z在其中執(zhí)行進(jìn)程的區(qū)域的名稱 (zonename)%字面值 %Example1 Setting the Core File Name PatternWhen executed from a users $HOME/.profile or $HOME/.login, the following command sets the core file name pattern for all processes that are run during the login session:example$ coreadm -p core.%f.%pNote that since the process-ID is omitted, the per-process core file name pattern will be set in the shell that is currently running and is inherited by all child processes. Example2 Dumping a Users Files Into a SubdirectoryThe following command dumps all of a users core dumps into the corefiles subdirectory of the home directory, discriminated by the system node name. This command is useful for users who use many different machines but have a shared home directory.example$ coreadm -p $HOME/corefiles/%n.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年關(guān)于格式合同的法律規(guī)制與挑戰(zhàn)
- 2025混凝土拌合站租賃合同范本
- 2025年橋梁工程試題
- 2025年腸梗阻理論試題
- 幼兒園語言教育與活動設(shè)計 課件 第6、7章 幼兒園語言教育活動實(shí)施的價值取向與反思;幼兒園語言教育活動中的教師與幼兒
- 高三高考數(shù)學(xué)知識點(diǎn)總結(jié)
- 保險-72名億萬富翁死亡的背后
- 縱隔疝的臨床護(hù)理
- 火災(zāi)應(yīng)急流程制作指南
- 某咨詢-北京世博偉業(yè)房地產(chǎn)0806一階段人力資源診斷報告
- 公共文化服務(wù)保障法解讀課件
- 第五章-語言規(guī)劃與語言調(diào)查課件
- 2023年海南省財金集團(tuán)有限公司招聘筆試模擬試題及答案解析
- 托馬斯潘恩課件
- 顱腦損傷患者護(hù)理查房課件
- 口腔疾病與全身系統(tǒng)性疾病的關(guān)系課件
- 年產(chǎn)16萬噸焦油焦油車間蒸餾工段工藝初步設(shè)計 畢業(yè)設(shè)計
- 霍亂弧菌實(shí)驗(yàn)室檢測PPT
- 五年級下學(xué)期信息技術(shù)3Done三維制作蘿卜課件
- DB51∕T 2858-2021 農(nóng)業(yè)科技成果效益計算方法及規(guī)程
- 監(jiān)控系統(tǒng)投標(biāo)書(施工組織設(shè)計)
評論
0/150
提交評論