使用c++filt查看trafficserver堆栈调用信息
在實(shí)際運(yùn)維中,我們經(jīng)常遇到Apache Traffic Server遇到段錯(cuò)誤時(shí),在traffic.out中留下的堆棧調(diào)用信息,比如下面的
FATAL: ../.././ats-4.2.0/proxy/http/HttpSM.cc:2080: failed assert `!t_state.host_db_info.reverse_dns`
/opt/ats/bin/traffic_server - STACK TRACE:
/opt/ats/lib/libtsutil.so.4(+0x1f468)[0x2b5f6be67468]
/opt/ats/lib/libtsutil.so.4(+0x1da6f)[0x2b5f6be65a6f]
/opt/ats/bin/traffic_server(_ZN6HttpSM19process_hostdb_infoEP10HostDBInfo+0x67b)[0x51bbeb]
/opt/ats/bin/traffic_server(_ZN15HostDBProcessor13getbyname_immEP12ContinuationMS0_FvP10HostDBInfoEPKciRKNS_7OptionsE+0x2c8)[0x5e4078]
/opt/ats/bin/traffic_server(_ZN6HttpSM16do_hostdb_lookupEv+0xed)[0x519d1d]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0xbb0)[0x531ee0]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x37a)[0x530f8a]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1f2)[0x531522]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x37a)[0x530f8a]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1f2)[0x531522]
/opt/ats/bin/traffic_server(_ZN6HttpSM21state_cache_open_readEiPv+0xfe)[0x5258be]
/opt/ats/bin/traffic_server(_ZN6HttpSM12main_handlerEiPv+0xd8)[0x5283d8]
/opt/ats/bin/traffic_server(_ZN11HttpCacheSM21state_cache_open_readEiPv+0x1b2)[0x50bb12]
/opt/ats/bin/traffic_server(_ZN7CacheVC8callcontEi+0x53)[0x5f1353]
/opt/ats/bin/traffic_server(_ZN7CacheVC17openReadStartHeadEiP5Event+0x8d4)[0x65ba44]
/opt/ats/bin/traffic_server(_ZN7CacheVC14handleReadDoneEiP5Event+0x1ed)[0x63af3d]
/opt/ats/bin/traffic_server(_ZN5Cache9open_readEP12ContinuationP7INK_MD5P7HTTPHdrP21CacheLookupHttpConfig13CacheFragTypePci+0x3f7)[0x65d407]
/opt/ats/bin/traffic_server(_ZN14CacheProcessor9open_readEP12ContinuationP3URLbP7HTTPHdrP21CacheLookupHttpConfigl13CacheFragType+0xab)[0x63a0cb]
/opt/ats/bin/traffic_server(_ZN11HttpCacheSM9open_readEP3URLP7HTTPHdrP21CacheLookupHttpConfigl+0x94)[0x50b564]
/opt/ats/bin/traffic_server(_ZN6HttpSM24do_cache_lookup_and_readEv+0xf3)[0x519323]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x722)[0x531a52]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x37a)[0x530f8a]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1f2)[0x531522]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1e2)[0x531512]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x37a)[0x530f8a]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1f2)[0x531522]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x37a)[0x530f8a]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM18state_api_callbackEiPv+0x8b)[0x5285cb]
/opt/ats/bin/traffic_server(TSHttpTxnReenable+0x354)[0x4baeb4]
/opt/ats/libexec/trafficserver/mframe.so(_Z24ReadRequestHdrHookHandleP10tsapi_cont7TSEventPv+0x57)[0x2b5f775d5a67]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x114)[0x524b94]
/opt/ats/bin/traffic_server(_ZN6HttpSM14set_next_stateEv+0x1f2)[0x531522]
/opt/ats/bin/traffic_server(_ZN6HttpSM32state_read_client_request_headerEiPv+0x226)[0x521fb6]
/opt/ats/bin/traffic_server(_ZN6HttpSM12main_handlerEiPv+0xd8)[0x5283d8]
/opt/ats/bin/traffic_server(_ZN6HttpSM17handle_api_returnEv+0x2dc)[0x530eec]
/opt/ats/bin/traffic_server(_ZN6HttpSM17state_api_calloutEiPv+0x2b0)[0x524d30]
/opt/ats/bin/traffic_server(_ZN6HttpSM21attach_client_sessionEP17HttpClientSessionP14IOBufferReader+0x684)[0x52b2f4]
/opt/ats/bin/traffic_server(_ZN17HttpClientSession16state_keep_aliveEiPv+0xa8)[0x50c3c8]
/opt/ats/bin/traffic_server[0x68873b]
/opt/ats/bin/traffic_server[0x68ae54]
/opt/ats/bin/traffic_server(_ZN10NetHandler12mainNetEventEiP5Event+0x1f2)[0x680a92]
/opt/ats/bin/traffic_server(_ZN7EThread13process_eventEP5Eventi+0x8f)[0x6ad32f]
/opt/ats/bin/traffic_server(_ZN7EThread7executeEv+0x44b)[0x6adb6b]
/opt/ats/bin/traffic_server[0x6ac6ba]
/lib64/libpthread.so.0[0x3095a07851]
/lib64/libc.so.6(clone+0x6d)[0x30956e890d]
我們發(fā)現(xiàn)出錯(cuò)的地方是
FATAL: ../.././ats-4.2.0/proxy/http/HttpSM.cc:2080: failed assert `!t_state.host_db_info.reverse_dns`
為了更方便地分析函數(shù)之間的堆棧調(diào)用關(guān)系,我們可以使用c++filt來(lái)轉(zhuǎn)換一下函數(shù)名稱(demangle name),得到更易讀的調(diào)用關(guān)系圖,為此我將上面的信息記為stack.txt,使用
cat stack.txt | c++filt
來(lái)得到下面的信息
這樣的話,調(diào)用關(guān)系一下子清晰多了,更加便于調(diào)錯(cuò)。針對(duì)我目前給出的這個(gè)錯(cuò)誤,我發(fā)現(xiàn)這個(gè)錯(cuò)誤與host.db有關(guān),經(jīng)過(guò)仔細(xì)分析,是host.db文件存在權(quán)限問(wèn)題,將其更改為tserver用戶和組就可以了。
關(guān)于c++filt的參見(jiàn)文獻(xiàn)詳細(xì)解釋可以參見(jiàn)
[1].http://www.sourceware.org/binutils/docs/binutils/c_002b_002bfilt.html
[2].http://book.51cto.com/art/201005/197787.htm
總結(jié)
以上是生活随笔為你收集整理的使用c++filt查看trafficserver堆栈调用信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用python中的Matplotlib
- 下一篇: 使用awk,sort和uniq从ATS访