3
A
回答
2
呃,沒有。可執行文件包含機器代碼。全局變量的初始值。在Windows上,調試信息通常存儲在單獨的文件.pdb中。該文件中關於程序中的函數或變量的調試數據稱爲符號。
dbghelp API是described here。
10
一個很高層次的解釋如下:
首先符號不在C++世界裏。當使用某些指定的設置進行構建時,它們存在於幾種高級語言(如C,C++等)的二進制文件中。我們來定義
'int i = 2;'
在二進制中,'i'只是一個內存位置(例如0x10203040),它正在用2初始化。沒有稱爲'i'的內存位置。通過調試符號將名稱'i'分配給該內存位置,該符號使用二進制文件加載(使用某些標記構建時),該文件將「內存位置」映射保留到「源級別名稱」。
作爲示例,PE file format提供了用於存儲調試符號信息的調試目錄。這些在調試時非常有用,因爲在沒有這樣的調試符號的情況下,僅根據binray 0和1進行調試將是一個非常非常具有挑戰性的任務。因此,當您調試使用調試標誌構建的這樣的二進制文件(其具有'i'的上述定義)時,調試器通過PE中的調試目錄知道存儲器位置'0x10203040'對應於'i'文件。
相關問題
- 1. 在MSVC++中解釋調試符號6
- 2. 你好的NodeJS世界的例子 - 符號查找錯誤
- 3. Objective C中的@符號是什麼?
- 4. C中有符號和無符號字符需要什麼?
- 5. 瞭解符號調試器
- 6. 什麼是反引號符號VS用戶模式調試器
- 7. iPhone - &符號,&符號是什麼?
- 8. 什麼是₧符號?
- 9. 讓(你好,世界)的Swift語法:(字符串,字符串)=(「你好」,「世界」)
- 10. 什麼是€符號的unicode
- 11. 有符號和無符號值的含義是什麼?
- 12. 爲什麼「你好*世界」不匹配「你好世界」?
- 13. netbeans C++調試信號是什麼
- 14. 在Python中重新解釋帶符號的無符號長度
- 15. 調試符號和PE
- 16. 什麼是字符串格式C#{0,12:N0}(冒號和引號)
- 17. 「符號」與「加載符號列表」中的含義是什麼?
- 18. 爲什麼調試C#項目顯示C++/CLI符號?
- 19. URL中的問號(?)和&符號(&)是什麼意思?
- 20. Objective-C中的符號^表示什麼?
- 21. VBA中的$符號是做什麼的?
- 22. Powershell中的「@」符號是做什麼的?
- 23. 什麼是符號化調用堆棧?
- 24. 是否有解析冒號和逗號符號的解析器?
- 25. 啓用調試的編譯器符號是什麼?
- 26. gdb:用於調試的符號文件是什麼
- 27. 什麼是C#@符號前綴字符串的C++等價物?
- 28. 什麼是目標C方法(^)符號
- 29. 什麼是__DARWIN_C_LEVEL C預處理符號?
- 30. 是什麼符號^表示在Objective-C?
調試符號既可以存儲在PE的Debug目錄中,也可以存儲在單獨的pdb文件中,對嗎? – COMer 2010-09-12 13:53:05