|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
在線求救:關於程序coredump的分析
有一個程序以前運行的好好的沒有動過,但最近這幾天動不動就coredump,用dbx分析,是在一個SQL語句(ESQL/C)的地方崩了。懷疑是什麼地方越界了,但是實在感覺無從查起。
鬱悶了好幾天。想自己重現又重現不了,不知那位大哥有好的建議。 |
在線求救:關於程序coredump的分析
把core相關的代碼貼上來,SQL以及SQL用到的臨時變量等都貼上來。 |
在線求救:關於程序coredump的分析
對不起鍵盤兄,這設計到公司的機密,我這也沒有代碼,我查到在那裡崩了後,我們頭查了程序說是那裡是一個delete語句,變量是一個int,日誌記錄
這個變量沒有問題。
我知道這樣有點難為大俠,我只是想你們能不能給我一點建議,謝謝 |
在線求救:關於程序coredump的分析
分析你的core文件,看看是如下的那個,這樣便能夠確定是哪種類型引起的core。
SIGBUS
SIGSEGV
SIGFPE |
在線求救:關於程序coredump的分析
[code]
Type 'help' for help.
reading symbolic information ...
[using memory image in core]
Segmentation fault in usl_exec_init_mods at 0x2020202020202020
0x2020202020202020 (???) warning: Unable to access address 0x2020202020202020 from core
(dbx) where
warning: could not locate trace table from starting address 0x2020202020202020
DELETE(0x9001000, 0xa0310d70, 0xfffffff), line 509 in "##.c"
[/code]
這是dbx分析core的 |
在線求救:關於程序coredump的分析
鍵盤兄,我如何才能確定是哪種類型引起的core。
SIGBUS ?
SIGSEGV ?
SIGFPE? |
在線求救:關於程序coredump的分析
看信號呀。
FT,我剛給你寫的回復,不見了。我的IE出錯。
你的問題是因為
應用程序試圖修改一個已經被內核保護的數據對像引起的。
請檢查delete前後:
1、是否數據對像已經提交給系統處理。然後有操作。
2、是否修改一個已經不存在的數據對象。
3、是否修改本來屬於系統保護的對象。
4、是否有擁有權限。 |
在線求救:關於程序coredump的分析
老大,你怎麼看出來的?厲害!!是那兩個warning給你的提示嗎? |
在線求救:關於程序coredump的分析
看core中where的提示信息。
我也是瞎猜,靠感覺。:P |
在線求救:關於程序coredump的分析
我們頭說可能是之前的什麼地方越界了,把一些informix用的變量什麼的給覆蓋了,導致執行SQL語句失敗,但天知道到那裡去找那個該死的越界 |
在線求救:關於程序coredump的分析
[code]
把一些informix用的變量什麼的給覆蓋了
[/code]
這個可能性是存在的。
你代碼是保密的,在沒有辦法幫助你了。自己調試程序看看吧。 |
在線求救:關於程序coredump的分析
這種情況一般都是buffer越界造成的,你可以用memwatch這個工具包看一下,具體這個包你去搜一下。 |
在線求救:關於程序coredump的分析
多謝兄台,我再試試吧 |
在線求救:關於程序coredump的分析
[code]
這種情況一般都是buffer越界造成的,你可以用memwatch這個工具包看一下,具體這個包你去搜一下。[/code]
有AIX用的嗎?多謝多謝 |
| |