我從同事那裏收到了我的程序(運行在RHEL 5.3上的qt應用程序)的回溯,當我分析它時,發現了一些我無法解釋的東西。如果你看這個回溯,你會注意到main和_start的蹤跡。但在此之前,我們會看到_ZN19datalog_render_area9prepStripEh和_ZN12QMutexLockerD1Ev,它們位於我的程序中。如何在_start和main之前看到我的一些函數被調用。這不是不可能的嗎? (請原諒我回溯的佈局)_start和主回溯函數調用
Funct Addr| Instr. Addr | FunctionSymbol ----------|-------------|----------------------------------------------------------| 0x8060bf2 | 0x8060dc0 | _Z11print_tracev 0x8061386 | 0x806141c | _Z15myMessageOutput9QtMsgTypePKc 0x822b558 | 0x822b598 | _ZN5QListIP13QStandardItemEixEi 0x8229ece | 0x8229f0b | _ZN12vehicleModel14updHeaderModelEP5QListIjE 0x822be7e | 0x822bf64 | _ZN14vehTableWidget19updVehicleTabLayoutEib 0x822c668 | 0x822c8e7 | _ZN14vehTableWidget13setupVehTableEib 0x82845f8 | 0x82846fc | _ZN14vehTableWidget11qt_metacallEN11QMetaObject4CallEiPPv
...函數調用程序
0x8060e86 | 0x80612ce | main _____________________|____________________|address outside of program: 4804252 0x8060a70 | 0x8060a91 | _start _____________________|____________________|address outside of program: 3218418744 0x808df02 | 0x808df13 | _ZN12QMutexLockerD1Ev _____________________|____________________|address outside of program: 3218420336 _____________________|____________________|address outside of program: 152429104 _____________________|____________________|address outside of program: 3218420552 0x8208fa6 | 0x820acd0 | _ZN19datalog_render_area9prepStripEh _____________________|____________________|address outside of program: 3218420336 _____________________|____________________|address outside of program: 3218420500
這是一個很好的想法。我以300的深度調用回溯函數,所以我可能像你說的,看着垃圾。現在我想到了,當我在那裏重新創建時,確保在qt creator調試器窗口中堆棧非常短。 –