私のプログラム(RHEL 5.3上で実行されているqtアプリケーション)のバックトレースを同僚から受け取り、分析していたので説明できないものが見つかりました。このバックトレースを見ると、mainと_startのトレースが分かります。しかしその前に私のプログラムにある_ZN19datalog_render_area9prepStripEhと_ZN12QMutexLockerD1Evが見えます。どのように私の関数のいくつかが_startとmainの前に呼び出されるのを見ることができます。それは不可能ではないですか?_startの前に見られる関数呼び出しとバックトレースのmain
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デバッガウィンドウで非常に短いと確信しています。 –