簡體   English   中英

使用VS2010在混合C#C(win32)項目中沒有加載符號

[英]No Symbols loaded in mixed C# C(win32) project using VS2010

我的項目有幾個新的C#模塊和一個使用win32系統調用編譯的C模塊(不是C ++)。 我正在使用PInvoke互操作層從C#調用C代碼。 C函數被調用。

所有模塊都寫入單個bin目錄和所有寫入pdb文件。

在運行,然后在調用C.dll之前在斷點處停止時,我看到C模塊中的斷點被禁用。 查看Debug | Windows | Modules列表,即使在執行調用后,我也看不到C.dll模塊已加載。

另一個事實:在解決方案|屬性|配置屬性|配置中顯示使用Platform =“Any CPU”的C#模塊和使用“Win32”的C模塊

為什么不加載模塊,為什么不加載它的符號?

謝謝,馬克斯

我從幾個來源鞏固了答案。

  • 你在運行調試配置嗎?
    在解決方案中檢查:SolnExplorer |解決方案|屬性| ConfigurationProperties | 配置=調試
    和:SolnExplorer |解決方案|屬性| ConfigurationProperties | 配置| ProjectConfig [] =調試 - >注意:盡管斷點將與發布配置一起使用,但有時可以優化或重新排列行。

  • 你在生成調試信息嗎? 在C#項目中:SolnExplorer |項目|屬性| ConfigurationProperties |鏈接器|調試|生成調試信息= YES
    在C ++項目中:SolnExplorer |項目|屬性| ConfigurationProperties | C / C ++ |調試信息格式=程序數據庫(/ Zi)
    - >注意:檢查命令行參數是值得的。

  • 一切都在重建嗎? 如果PDB不同步,則調試器可能無法加載符號:
    在解決方案中:所有項目的SolnExplorer |解決方案|屬性|配置屬性| Build = TRUE(已選中)。

  • 你可以調試非托管代碼嗎?
    在C#項目中:SolnExplorer |項目|屬性|調試|啟用非托管代碼debugging = TRUE(已選中)
    在C / C ++項目中:SolnExplorer |屬性|配置屬性|調試|調試器類型=混合

  • 文件是否放在您認為的位置? 我使用單個bin \\ debug目錄來收集所有項目DLL和PDB。
    在C#項目中:SolnExplorer |項目|屬性|構建|輸出路徑= .. \\ bin \\ debug
    在C / C ++項目中:SolnExplorer |項目|屬性| ConfigProp |鏈接器| OutputFile = .. \\ bin \\ debug \\ $(TargetName)$(TargetExt)

  • 舊文件是否會妨礙? 檢查bin目錄中所有輸出文件的時間戳。 確保它們是最后一次重建時的結果。
    有些人建議吹掉所有的bin和obj目錄。 這可能是值得的,只是為了看到舊文件沒有鋪設。 檢查時間和日期標記也應該這樣做。

  • DLL已加載? 如果禁用斷點,可能是因為尚未加載DLL。 選中菜單|調試| Windows |模塊。
    在模塊名稱中查找dll。
    在相同的模塊窗口中,確保從正確的路徑加載文件。
    如果程序集在多個程序之間共享,則可以從GAC加載。
    - >注意:您可以在需要之前預加載C / C ++ DLL。 使用:IntPtr lpDLL = LoadLibrary(myLibraryName);

我在C#中有一個帶有C ++ DLL的Windows服務。 我看到的問題是Max指出:

  • DLL工作,但從未出現在模塊窗口中。

我做了很多搜索,這是一個很好的列表,與許多其他來源的信息相匹配。

要使ikh的注釋明確:

  • “Auto”對我不起作用,但在Attach對話框中明確設置“Native”和“Managed”代碼。

這是我的五十美分。 在我的情況下,似乎我的c ++ / cli項目的pdb文件不再更新,而我的c#項目的pdb文件是。 這可能使它們無效並使調試器無法加載它們。

我記得已經移動了我項目的源代碼庫。 經過一點點的討論后,我發現一些絕對路徑問題可能就是問題所在。 運行git clean -dfx為我解決了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM