web-dev-qa-db-ja.com

Linuxの2つの異なるディストリビューションでセグメンテーション違反(コアダンプ)が発生し、発生しない

私はLinux OSの初心者です。C++プロジェクトを実行するためにUbuntu 14.04 LTS(64ビット)をインストールしました。残念ながら、先生がC++コードを教えてくれたとき、Ubuntuで実行するとセグメンテーションフォールト(コアダンプ)が発生しましたが、友人にElementary OS(32ビット)で実行するように頼んだところ、別のLinuxディストリビューションになりました、コードは本当にうまくいきました。だから私はいくつかの質問をしたいと思います:

  1. 32ビットバージョンではプログラムは正常に実行されますが、64ビットバージョンでは実行できません(私の場合はコアダンプ)。
  2. 私のコンピューターは64ビットマシンですが、32ビットバージョンのUbuntuをインストールできますか?
  3. Ubuntu 15を試して、同じエラーが発生するかどうかを確認する必要がありますか(コアダンプ)?
1
VuNguyen

最善の策は、おそらくgdbを使用してコードをデバッグする方法を学ぶことです。 (デバッグシンボルを有効にするために)-gフラグを使用してコードをビルドし、サイドgdbで実行します。

gdb ./nameofyourprogram

セグメンテーション違反が発生したら、「where」と入力すると、クラッシュした場所が表示されます。コードのデバッグを学ぶことは、コードを学ぶことと同じくらい重要です。また、オンライン Getting Started Guide を使用して、デバッガを使いこなすことをお勧めします。

2
Colin Ian King