C++にて開発しております。このたびプログラムにてセグメンテーションフォールトが起こってしまったため、原因をつきとめるためにgdbを用いてデバッグを行いました。しかし、gdbで各関数にstep実行しながら該当コードすべてを実行したところ、正常終了にコードの最後まで実行ができました。このようなことに考えられる原因はなんなのでしょうか?
実行環境はcentosの仮想マシン上です。
gdbを使って同じプログラムを実行した場合でも時々成功して、そのほかはセグメンテーション違反という感じになっています。
参考までにgdbの画面の画像をはります。
メモリのエラーのようで、該当の関数もわかっていますが、そこの部分だけテストしてもエラーが出ない。もしくは時々成功する意味がわからない。
という現状です。
上ではrun が成功し、下では失敗しています。
エラーが出ている時のコードをのせます。エラーが出ているとしたらたまにこの関数の中で起こっているようです。
C++
1 typedef std::map<std::string, std::string> MAP; 2 3 MAP container; 4 5 template <typename T> bool getParam(std::string key, T* value) { 6 7 MAP::iterator p; 8 std::stringstream stream; 9 10 if ((p = container.find(key)) != container.end()) { 11 stream << p->second; 12 stream >> *value; 13 return true; 14 } 15 return false; 16 }
他にもなにか情報が必要であれば追記いたします。どうかよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー