我知道插入一個正常的斷點可以稍微改變已編譯的代碼,但是對於數據斷點來說也是這樣嗎?我不明白他們在邏輯上如何與代碼「內聯」。數據斷點是否會影響Visual Studio中的編譯代碼?
2
A
回答
1
如果您所指的是「變量監視」或「內存斷點」,如果您要求調試程序在內存變量或區域發生更改時中斷,那麼可以通過讓CPU監視所有寫入訪問的內存地址/範圍,並打入調試器,讓其決定是否打破每次寫入。 (我不知道CPU /調試器是如何完全實現這一點的,只是它確實如此)。
這不會修改您的內存內容或內存中的可執行代碼。
4
據我所知,斷點不會改變編譯的代碼,既不是正常的也不是數據斷點。
程序正在使用編譯器進行編譯,然後調試器使用編譯的可執行文件運行。
正在更改的代碼是內存代碼。調試器將可執行文件加載到內存並在那裏更改代碼。
相關問題
- 1. java程序代碼的編碼是否影響編譯?
- 2. Visual Studio是否不斷編譯?
- 3. G ++編譯Visual Studio代碼
- 4. Visual Studio代碼 - SCSS編譯
- 5. 用gcc編譯的代碼不會在visual studio 2012編譯
- 6. 在Visual Studio代碼中添加斷點
- 7. Visual Studio是否仍然可以優化預編譯的代碼?
- 8. 交叉編譯visual studio的ARM7代碼
- 9. 編碼是否會影響strstr()(和相關函數)的結果
- 10. Visual Studio - 有條件和禁用斷點的運行時影響
- 11. C#文件的結構是否會影響編譯的內容?
- 12. 如何用Visual Studio代碼編譯Opencv?
- 13. Microsoft Visual C++ Express編譯器是否編譯C代碼?
- 14. 文件中代碼的位置是否會影響其性能?
- 15. 如何判斷(VB)代碼是否在Visual Studio中運行?
- 16. visual studio編譯器設置對CUDA內核性能的影響
- 17. visual studio的版本會影響已編譯應用程序的性能嗎?
- 18. 是否有任何從Visual Studio項目中編譯CIL代碼的示例
- 19. 使用Visual Studio代碼的摩卡斷點代碼
- 20. 編譯器的編譯可能會影響編譯的程序?
- 21. glColorMask是否會影響glClear
- 22. Visual Studio斷點,它是否會停止整個應用程序?
- 23. 重新編譯編譯器對編譯後的代碼有影響嗎?
- 24. DOCTYPE的選擇是否會影響JavaScript代碼所見的DOM?
- 25. 在sml中使用閉包是否會影響交互式編譯器中運行代碼的速度?
- 26. Visual Studio代碼 - 節點調試器斷點沒有被擊中
- 27. 爲什麼我的Visual Studio 2013是C++代碼編譯
- 28. 是否可以在Android Studio中編譯簡單的Java代碼?
- 29. 設置斷點到Visual Studio代碼在Object Pascal代碼
- 30. 字符串的硬編碼是否會影響性能?
一個正常的斷點會稍微改變編譯後的代碼,我認爲它只是一個INT3指令放在你放置斷點的行之前。請參閱:http://stackoverflow.com/questions/3915511/how-do-breakpoints-work-in-c-code – sji
此人是正確的。證明:你可以在調試器之外啓動一個可執行文件,然後附加一個調試器並設置一個斷點。編譯後的代碼沒有可能發生變化。 編輯:我明白了,謝謝你的評論。我以爲你問過編譯器是否生成了不同的代碼,如果你有一個斷點集,它不會。但是,您在詢問調試器是否更改/檢測了內存中的代碼。 –
調試器會修改內存中的代碼,以便在所需的中斷點處插入INT3。這是在運行時,與編譯無關。 – Mordachai