1

コアがダンプされたことを確認するために先に進むことができません。

入力したときにこれを取得しました

gdb normal_estimation core


Reading symbols from /home/sai/Documents/pcl_learning/normal_estimation/build/normal_estimation...(no debugging symbols found)...done.

warning: core file may not match specified executable file.
[New LWP 11816]

warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
Core was generated by `./normal_estimation'.
Program terminated with signal 11, Segmentation fault.
#0  0xb53101d6 in free () from /lib/i386-linux-gnu/libc.so.6
(gdb) 

私は何をすべきか教えてください。

4

1 に答える 1

3

プログラムは信号11、セグメンテーション違反で終了しました。
#0 0xb53101d6 in free () from /lib/i386-linux-gnu/libc.so.6

学習する必要のある最初のコマンドはbacktrace(またはその同義語:)ですwhere

これにより、どのコードがを呼び出し、どのコードfreeがクラッシュしたかがわかります。

ただし、そのコードが実際の問題とは関係がない可能性があります。クラッシュfreeは常に、何らかのヒープの破損(割り当てられていないメモリの解放、同じメモリの2回の解放、すでに解放されているメモリへの書き込み)によって引き起こされます。 、または割り当てられたバッファのオーバーフロー)。

Linuxでヒープの破損を診断するための最も便利なツールは、ValgrindAddressSanitizerです。これらのツールのいずれかが、あなたが間違っていることを正確に教えてくれる可能性があります。

于 2013-01-08T04:06:20.193 に答える