藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 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用的嗎?多謝多謝



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com