core時看不到具體崩潰點的解決方法

2021-09-02 21:52:50 字數 1094 閱讀 8008

1、如何在堆疊被破壞的情況下解決宕機問題**的)

宕機不用怕,原來這樣噠!

通常在生產環境下如果遇到宕機,我們的做法很簡單gdb除錯core檔案,可以看到程式的堆疊資訊,就可以定位問題,解決問題。

但是在某些情況下,堆疊資訊由於某些原因被損壞了,bt打出來顯示的全是??????

那麼如果想找到問題那就難辦了。

不過今天我們介紹一種,方法

使用gcc內建函式

__builtin_return_address(level)   

level=0表示第一層位址

level=1表示第二層位址

level=2表示第三層位址

以此類推

使用時直接 

1. printf("address %p -%p -%p ", __builtin_return_address(0),__builtin_return_address(1),__builtin_return_address(2));

2. 反編譯 objdump -cd yourexecutable > my.asm

檢視printf的輸出

address 0x48161a -0x4928e8 -0x739e94

這樣我們就知道上面那條語句的呼叫情況是

0x48161a

0x4928e8

0x739e94

在my.asm中找到對應的函式位址.

就找到了相應的函式名,ok,到這裡大家都明白了。

2、共享庫so有時候core的時候只能看到是so引起的core,找不到具體的函式:

可通過如下方法尋找 core 的函式資訊:

找到導致 core 的 rank 模組,在上面的例子中,rank 模組被重新命名為 libsearcherrank.so_1534892175 了,在相應目錄下找到原始的動態庫;

執行 objdump -cd libsearcherrank.so > a.log

vim a.log  找到其中乙個 frame 的位址, 比如 0x0x1e9f1c

從上面大約可以看見是 searcher_rank::p13ngenderrank::_adjust 函式呼叫  boost::lexical_cast 引起的

apache看不到服務等問題

apache裝完後為什麼顯示no service installed?或者是你在apache monitor裡面看不到apache2的服務?安裝完apache之後 不是按照預設路徑安裝的,例如是 d 右下方哪個小羽毛圖示是沒有啟動的,左鍵不好使,而且提示 no services installed ...

dubbo admin 看不到註冊的服務

一 背景 1 dubbo服務正常註冊到zookeeper 2 客戶端呼叫dubbo服務正常 二 原因 dubbo admin未配置分組資訊 四 參考部落格如下 今天重新配置了下dubbo,結果發現管理控制台上沒有顯示可用的服務,由於前陣子剛配置的時候是沒有問題的,於是開始逐步排查。專案註冊中心用的z...

lspci能看到ifconfig a看不到網絡卡

隨著寬頻技術的快速發展,伺服器使用萬兆網絡卡的概率越來越高。最近裝了幾台伺服器都用的萬兆網絡卡,為了圖便宜,網絡卡和模組都是 上買的,這部還真遇到不少問題。我的伺服器都是centos6.4 64位的,網絡卡裝上後,lspci grep 82599 能看到網絡卡 執行lspci grep 82599能...