2010-07-20 90 views
3

我剛剛打開了我的「hello world」應用程序(C++)的totalview,我只能查看彙編代碼。如何查看totalview中的源代碼?

是否有任何設置/標誌我需要設置查看源代碼?菜單欄 - >查看 - >源代碼 - >來源不適用於我。

我試圖調試的應用程序只是一個cout < <「Hello World」應用程序,只是爲了讓調試器啓動並運行。

回答

6

讓我們從簡單的東西開始。

你是否用'-g'調試標誌編譯你的應用程序?調試器依靠編譯器爲其提供符號表和行號表,以將可執行文件中發生的情況映射回源代碼。沒有那個-g標誌(或者如果你隨後剝離你的應用程序)那個信息將不會出現,並且組裝調試是你所期望的最好的。

如果你用-g編譯過源碼和可執行文件都放在同一個目錄下,或者如果沒有編譯它們,它們就被移動了嗎?編譯器只知道源和可執行文件在創建時的位置,如果將它們移動,則有時調試器將無法找到源代碼文件。在這種情況下,您可能需要通過定義源代碼搜索路徑來提供一些幫助。

寫回來,讓我知道如果-g修復了你的問題。如果沒有,我們可以看看搜索路徑等。

乾杯, 克里斯

+0

-g幾乎可以修復它。當我開始我的應用程序(不是你好世界,另一個更復雜的)我開始與2個斷點。一個在我的類的構造函數中,另一個在我使用的同一個類中的某個函數中。第一個斷點是okey。它停下來,我看到在sourecode停止的地方。但是當我使它運行到即將到達的下一個斷點時,它顯示了我的程序集...爲什麼是這樣? – Jason94 2010-08-04 08:52:05

2

我意識到Jason94幾乎肯定解決了他的問題,一些其他的方式,但我想我可以附和這裏回答這個問題,因爲它是一個很好的問題。

對於這種特殊情況,知道該程序是否爲多線程將會很有趣。 TotalView旨在讓您使用多線程程序,並且它具有可能令用戶感到驚訝的特性。默認情況下,它不會總是將您關注到遇到斷點的線程。所以你的程序實際上可能停在另一個線程的第二個斷點處。假設你有6個線程(我們將它們編號爲0 - 5),並在例程中設置一個斷點。線程0是你關注的那個,你點擊「去」。程序運行並且線程4首先打斷點。默認情況下,當斷點被擊中時,斷點將停止整個過程。在調試器中,您可能會看到程序集,它表示線程4到達斷點時線程0的位置。 您可以檢查根窗口或線程窗格以查看其他線程的狀態,並且您可能會看到其中一個表示「B2」(對於斷點2)。然後,您可以單擊該線程,TotalView將您重新調整到該線程,並且您會看到它坐在斷點處。

爲什麼我們這樣做?那麼,因爲我們認爲只是因爲另一個線程發生了斷點而讓你的焦點「從你身上扯開」是令人困惑/不安的。所以默認情況下,我們讓用戶控制他們的線程焦點。

您可以更改哪一個會告訴totalview將進程窗口重新調整到「事件地點」。您可以設置,如果您希望讓TotalView重新將注意力集中在斷點上,但請注意,當您這樣做時,您可能會從一個線程跳到另一個線程。

另一種可能性是TotalView由於某種原因而停止了進程,而不是被命中的斷點。程序段錯誤?檢查進程窗口頂部的狀態欄,查看線程和進程的狀態。

無論如何 - 只是想發佈這個記錄。

+0

您能否提供有關此首選項設置的參考? – Stabledog 2017-06-22 17:56:29