我在一個mips多核系統中有一個程序,我從內核得到的回溯真的很難弄清楚(至少對我來說),我想也許其中一個內核寫到mem,但並不是所有的堆棧都被損壞了,這讓我對它更加困惑。C++ backtrace with this = 0x0 in various frames
在幀#2中,它是NULL,並且在幀#0中也是NULL(核心轉儲的原因)。
這是(部分)回溯:
#0 E::m (this=0x0, string=0x562f148 "", size=202) at E.cc:315 #1 0x00000000105c773c in P::e (this=0x361ecd00, string=0x562f148 "", size=202, offset=28) at P.cc:137 #2 0x00000000105c8c5c in M::e (this=0x0, id=7 '\a', r=2, string=0x562f148 "", size=202, oneClass=0x562f148 "", secondClass=0x14eff439 "", offset=28) at M.cc:75 #3 0x0000000010596354 in m::find (this=0x4431fd70, string=0x562f148 "", size=202, oneClass=0x14eff438 "", secondClass=0x14eff439 "", up=false) at A.cc:458 #4 0x0000000010597364 in A::trigger (this=0x4431fd70, triggerType=ONE, string=0x562f148 "", size=0, up=true) at A.cc:2084 #5 0x000000001059bcf0 in A::findOne (this=0x4431fd70, index=2, budget=0x562f148 "", size=202, up=true) at A.cc:1155 #6 0x000000001059c934 in A::shouldpathNow (this=0x4431fd70, index=2, budget=0x562f148 "", size=202, up=false, startAt=0x0, short=) at A.cc:783 #7 0x00000000105a385c in A::shouldpath (this=0x4431fd70, index=2, rbudget=, rsize=, up=false, direct=) at A.cc:1104
相對於M ::發現功能
442 m_t m::find(unsigned char const *string, unsigned int size, 443 hClass_t *hClass, h_t *fHClass, 444 bool isUp) { 445 446 447 const Iterator &it=arr_[getIndex()]->getSearchIterator((char const*)value, len); 448 449 unsigned int const offset = value - engine_->getData(); 450 451 int ret=UNKNOWN; 452 M *p; 453 for(const void* match=it.next(); 454 ret == UNKNOWN && match != NULL; 455 match = it.next()){ 456 p = (M*)match; 457 if(p->needMore()){ 458 ret = p->e(id_, getIndex(), value, len, hClass, fHClass, offset);
你可以包含'E :: m'的代碼嗎? – user7116 2012-04-25 14:33:19
這段代碼很簡單,只是在初始化時,一個成員正試圖進行檢查: int i; bool評估= true; 如果(member_){ .... } – ramp 2012-04-25 14:46:07
芯發生在
– ramp 2012-04-25 14:53:44