[英]Is it true that it is common for programs written in C to contain assembly code?
[英]Do I need to know assembly to debug programs written in C?
我正在學習C語言“C語言程序設計”,第2版,並且每個練習也都在學習。
我是否需要知道匯編才能調試我編寫的C程序作為書籍練習的解決方案?
另外,您推薦哪種調試器?
您不需要知道要在C中編程的匯編,包括調試。 但是,如果你知道裝配,那么C開始變得很有意義; 有一些組裝概念(最好是幾個不同的體系結構上的一些概念,比如x86和ARM)真的很有幫助,而且不僅僅是用於調試。
這不是必需的,但有時非常有幫助。 如果您正在使用MSVC ++,只需使用IDE中的那個,它也可以顯示反匯編。
不,你不需要知道裝配才能學習C.
就調試器而言,也許最簡單的選擇是使用您正在使用的IDE中內置的調試器。 在Windows上, Microsoft Visual Studio很受歡迎(有免費版本 )。 Eclipse是另一種流行的選擇,可以在許多平台上使用。
還有一些命令行調試器,比如gdb ,但它們比基於GUI的調試器更難開始。
為了逐步調試,知道匯編可能會有所幫助,但不是必需的。 如果確實有必要,它還取決於調試器。
但是還有其他方法來調試程序,例如將printf()
調用放在戰略位置。
不,asm不是必需的,但有幫助的,就像其他人所說的那樣,使用調試器......其他人沒有說過,是你甚至可以使用GDB,但一定要禁用編譯器優化或調試可能很難。
使用GCC -g2
或-g3
標志進行編譯時,可以使用GDB調試程序。 在這里你可以找到一個簡短的教程如何使用GDB http://cs.baylor.edu/~donahoo/tools/gdb/tutorial.html ,在這里你可以找到一個更廣泛的教程http://www.delorie.com/ GNU /文檔/ GDB / gdb_toc.html
如果要調試自己的程序,則無需學習匯編。 編譯器可以將源代碼信息嵌入到可執行文件(帶GCC的-g
標志)或側文件(帶有MSVC的/Z
標志族)中。
開始使用調試器並不難(即使您使用命令行),互聯網上到處都有大量資源。 這項投資將為您帶來最大回報。
然而,掌握匯編語言有時可能會有用。 當您想要檢查某些優化的執行方式時,有時(很少)需要查看編譯器生成的程序集。 但除非你有一份非常具體的工作,否則你不應該擔心這個問題。
不,你沒有。 Microsoft Visual Studio有一個很好的調試器。 其他選項包括Code :: Blocks或Eclipse 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.