我有一個Visual Studio 2012解決方案,包含幾個項目,一些在C中,一些在Fortran中(使用英特爾Composer XE 2013)。我經常使用iso_c_binding工具從Fortran代碼調用C代碼,但我注意到我無法有效地調試C代碼。在調試Fortran代碼的時候,我可以很好地查看變量的內容,但是如果我進入C代碼,他們會突然失去理智。大多數變量都聲稱是未定義的;傳遞給函數的任何東西都會包含不正確的值(但它仍然會區分指針和對象/ POD)。從另一個Visual Studio項目調試Visual Studio C程序
我仍然可以通過代碼;它似乎大部分都遵循預期的執行順序,但有時它會跳轉一點,這對於我使用gdb在Linux上調試編譯器優化的代碼很熟悉。
我有一個單獨的解決方案,也有C和Fortran項目。都從第一個解決方案調用同一個C項目,並且在這兩種情況下,我都可以再次調試,直到從第一個解決方案進入C項目,此時我遇到了同樣的問題。
我在做什麼錯?
這聽起來像你打在頭上的釘子。當談到優化本地變量和參數到寄存器等時,VC非常積極。我只能建議你通過反彙編窗口進行調試,如果你有調試符號,它將至少告訴你每一行發生了什麼。 – WhozCraig
所有優化都關閉了嗎? – kotlomoy
@kotlomoy,無論優化屬性設置爲什麼,我都會遇到此問題。如果還有其他事情要檢查,請告訴我。 – patrickvacek