私は "The C Programming Language"、第2版で、また各エクササイズでC言語を学んでいます。Cで書かれたプログラムをデバッグするためにアセンブリを知る必要がありますか?
私は本の演習の解決策として書いたCプログラムをデバッグするためにアセンブリを知る必要がありますか?
また、どのデバッガをお勧めしますか?
私は "The C Programming Language"、第2版で、また各エクササイズでC言語を学んでいます。Cで書かれたプログラムをデバッグするためにアセンブリを知る必要がありますか?
私は本の演習の解決策として書いたCプログラムをデバッグするためにアセンブリを知る必要がありますか?
また、どのデバッガをお勧めしますか?
は、デバッグを含めて、Cでプログラムするアセンブリを知る必要はありません。しかし、あなたがアセンブリを知っていれば、Cは多くの意味を持ち始めます。アセンブリの考え方(x86やARMなどのいくつかの異なるアーキテクチャーにいくつかの概念があることが望ましい)や、デバッグだけでなく、いくつかの概念を持つことが本当に役立ちます。
合意。マシン**が本当に**どのように働いているかを知ることは、あなたがより良く書くのに役立ちます。アセンブリ言語を学ぶことは、マシンがどのように低レベルで動作するのか、なぜあなたが行うのかを理解するのに役立ちます。 –
必須ではありませんが、時には非常に役立ちます。 MSVC++を使用している場合は、IDE内のものを使用するだけで、逆アセンブリも表示できます。
いいえ、あなたは限りデバッガが行くように、おそらく最も簡単な選択は、使用しているIDEに組み込まれているデバッガを使用することであるC.
を学ぶためにアセンブリを知る必要はありません。 WindowsではMicrosoft Visual Studioが一般的です(free versionがあります)。 Eclipseは、多くのプラットフォームで利用できるもう1つの選択肢です。
gdbなどのコマンドラインデバッガもありますが、GUIベースのデバッグツールよりも開始が難しくなります。
ステップバイステップでデバッグするには、アセンブリを知ることが役立つかもしれませんが、必ずしも必要ではありません。それが本当に必要な場合は、デバッガに依存します。
しかし、プログラムをデバッグする他の方法があります。戦略的な場所でprintf()
コールを入力してください。
いいえ、そうではありません。 Microsoft Visual Studioには素敵なデバッガがあります。その他のオプションはCode::BlocksまたはEclipseです。
いいえ、asmは必須ではありませんが、他の人のように、デバッガを使用しています...他の人は言いませんでしたが、GDBを使用することもできますが、コンパイラの最適化を無効にするか、 。
GCC -g2
または-g3
フラグでコンパイルすると、GDBでプログラムをデバッグできます。ここではGDB http://cs.baylor.edu/~donahoo/tools/gdb/tutorial.htmlを使用した短いチュートリアルハウツーを見つけることができます。ここではもっと広範なチュートリアルを見つけることができますhttp://www.delorie.com/gnu/docs/gdb/gdb_toc.html
独自のプログラムをデバッグする場合は、アセンブリを学ぶ必要はありません。コンパイラは、ソースコード情報を実行可能ファイル(GCCの-g
フラグ)またはサイドファイル(MSVCの/Z
フラグファミリ)に埋め込むことができます。
デバッガを使い始めるのは難しくありません(コマンドラインを使用していても)、インターネット上のあらゆる場所に豊富なリソースがあります。それはあなたに最も多くのリターンを与える投資です。
しかし、アセンブリ言語をある程度把握することは、時には役立つことがあります。コンパイラによって生成されたアセンブリを見ることは、いくつかの最適化がどのように行われているかを確認する必要がある(まれに)場合があります。しかし、これはあなたが非常に特定の仕事を持っていなければ心配するべきではありません。
いいえ、gdbよりも学ぶ方が簡単かもしれません。 ;-) –