4
私はLinux上でaddr2lineにを使用し、上記ライン82ADDR2LINEは、1つの番号の行番号を報告しますか?
79 free(var1);
80
81 printf("Thread end...\n");
82 free(var1);
83 }
をテストするために意図的にセグメンテーションフォールトが発生し、次のコードを持っていますが、「自由なダブル」を行い1、ダンプを引き起こすものです。..しかし、私がコマンドラインでADDR2LINEを使用すると、エラーの原因となった行番号が83ではなく82として報告されますか?
ここに何か不足していますか? ADDR2LineはNEXT行について言及していますか? HELO用
おかげで
リントン
おそらくテキストエディタが0から始まるでしょうか? –
または、アドレスがコール命令のアドレスではなく、エラーがキャッチされたときにスタック上のリターンアドレスである可能性があります。 – Dipstick
2番目のfree()の後に別の文(行)を追加してみてください。おそらく、プログラムがfree()(行番号を説明する)を実行しているのではなく、関数から*返すときにプログラムがクラッシュする可能性があります。別の推測では、ファイルをコンパイルした後で編集した可能性があります。 – nimrodm