我正在使用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