我有一個來自在CentOS 5.4上構建和運行的應用程序的堆棧跟蹤。該應用程序沒有調試建,所以沒有符號或行號的堆棧跟蹤,但只有地址,就像這樣:可以通過gdb解析調試符號給出不同的結果,具體取決於操作系統
/opt/app/bin/myApp [0x22ec09e]
/opt/app/bin/myApp [0x1fcdf31]
/opt/app/bin/myApp [0x22ebbcb]
...
我也有相同的應用程序,但與調試(-g)建。所以我可以用gdb打開這個二進制文件,並找到相應的源文件,函數名和這些地址對應的行號。
我的問題是,在CentOS 5.4上使用調試構建這個二進制文件,在哪個操作系統中,我使用gdb來解析符號?如果我使用gdb在CentOS 5.4上打開它,並使用信息行或列表,結果可能與在說Fedora 16時做的結果不同嗎?我在CentOS 5.4和Fedora 16上做了一些測試,表明沒有區別。但是,我能否相信這總是如此,或者我有一天會發現在某些情況下可能會有差異?
注:應用程序是用C++編寫的,並用g ++編譯。請讓我知道是否需要任何額外的信息來回答這個問題。
謝謝您的回答和提的是,優化標誌會影響映射,高度讚賞。 – joaerl 2014-10-17 08:40:51