我正在使用Totalview來調試一些代碼,並且它正在停止一個總線錯誤。fopen()上的總線錯誤?
這是什麼,我該如何解決?這裏是代碼剪斷
在我的主:
char *infilename = "/home/dcole/Images/lena1024s.jpg";
/* Try opening a jpeg*/
if(read_jpeg_file(infilename) > 0)
{
//do some stuff
}
功能:
int read_jpeg_file(const char *filename)
{
/* these are standard libjpeg structures for reading(decompression) */
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
/* libjpeg data structure for storing one row, that is, scanline of an image */
JSAMPROW row_pointer[1];
FILE *infile = fopen(filename, "rb"); //this line is where the debugger stops with a Bus Error
unsigned long location = 0;
int i = 0;
if (!infile)
{
printf("Error opening jpeg file %s\n!", filename);
return -1;
}
return 1;
}
我傳遞中的文件不存在。我可以看到它在調試器中顯示爲正確的路徑。
你是否已經開始使用調試器?哪條線出錯?另外,您可以顯示對read_jpeg_file的調用以及文件名參數的初始化/分配嗎? – Joe
您是否嘗試過運行valgrind檢查內存損壞? – user786653
當然 - 是的,我已經用Totalview加強了它。它有一個內存檢查器內置 – Derek