我在調試C中的宏時遇到了問題。當我嘗試設置斷點時,我收到消息:「斷點不會被命中,沒有與此行關聯的可執行代碼... 「有趣的是我可以調試文件中的所有其他內容,而不是這個宏。我已經正確加載了所有的符號文件,進行了清理和重建,並關閉了優化。任何想法爲什麼調試這個宏不起作用?在Visual Studio中調試宏的問題
2
A
回答
3
不知道足夠的情況下(這可能是有益的,看看定義,調用和在那裏你要設置的斷點),這裏有一些猜測:
你要爲宏定義斷點或者它被調用的地方? 如果你在定義中設置它,那麼這就是你會看到的錯誤。 該定義告訴預處理器在您的代碼中的其他地方進行替換,因此,當代碼到達編譯器時,其上的#define行被替換爲空行。
如果您在使用的位置正確設置斷點,您確定使用的是您認爲自己的宏的定義,並且該宏沒有被條件編譯以產生任何代碼? 這是禁用某些東西(例如調試輸出)的常用方法,並且不會在調用它的行上提供可執行代碼(除非其周圍有其他可執行代碼)。 檢查這一點的一種方法是在宏定義旁邊放置一個#error行 - 如果正在使用它,那麼編譯器將會吐出一個錯誤。
請記住,宏函數只是文本替換,所以調用它們的所有代碼都放在調用的一行(每一個調用)上。你實際上不能調試它們(在步進變成一個'多行'宏函數),你只能跨過它們比較前後狀態。這是複雜的宏功能可能是一個壞主意的主要原因之一。
相關問題
- 1. Visual Studio 2008調試問題
- 2. Visual Studio 2010調試問題
- 3. Visual Studio調試問題
- 4. Visual Studio 2008調試問題
- 5. Visual Studio調試器問題
- 6. Visual Studio調試器問題
- 7. Visual Studio調試器問題
- 8. Visual Studio 2008調試問題
- 9. Visual Studio 2008中的調試問題
- 10. Visual Studio 2010中的調試問題
- 11. Qt與Visual Studio宏問題
- 12. 問題與Visual Studio宏從
- 13. Visual Studio調試器關注的問題
- 14. Visual Studio調試問題與Resharper/Nunit
- 15. Windows 8 Visual Studio 2012調試器問題
- 16. SharePoint Visual Studio項目調試問題
- 17. Visual Studio 2010和IIS 5.1調試問題
- 18. 調試Visual Studio擴展性能問題
- 19. 在Visual Studio中宏
- 20. 在Visual Studio 2010中調試MVVM綁定的問題?
- 21. 在Visual Studio中的遠程調試問題
- 22. Firefox中的Javascript問題,但不在IE中調試問題VIsual Studio 2010
- 23. 打開CV + Visual Studio 2008中的Visual Studio下奇怪的調試問題
- 24. visual studio調試器中的問號
- 25. 調試在Visual Studio
- 26. 在Visual Studio中調試Webkit
- 27. 在Visual Studio中調試Boo
- 28. 在Visual Studio中調試Javascript
- 29. 在Visual Studio中調試IronPython
- 30. 在Visual Studio中調試
調試宏已被擊中或錯過與我,我儘量避免使用它們,如果可能的話。相反,如果運行正常,您可以將宏展開爲源代碼並進行調試,然後將其重新放回宏窗體中。 –
我試過這個,到目前爲止它正在工作......感謝您的幫助! – anthv123