从 linux 命令行执行时出现分段错误
Segmentation fault when executed from linux command line
我的代码可以编译并且 运行 在我的 IDE 中没问题。
但是,当我使用 gcc 编译然后 运行 我的 a.out 文件时,它说 Segmentation fault (core dumped).
(编辑以包含我的代码)
在 main.c 我已经注释掉了我所有的代码,它仍然会导致段错误。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#include <pthread.h>
#include "BmpProcessor.h"
#include "PixelProcessor.h"
#include "PpmProcessor.h"
#include "debug.h"
#define THREAD_COUNT 8;
int main(int argc, char *argv[]) {
/** commented out all of my code */
return 0;
}
知道为什么吗? None 我包含的其他文件有一个主要方法。
调试细节
gcc -g -Wall -pedantic -o PurdyImageProcessor PurdyImageProcessor.c BmpProcessor.c PpmProcessor.c PixelProcessor.c -lm -pthread
PixelProcessor.c: In function ‘boxBlurMultithreading’:
PixelProcessor.c:437:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
PixelProcessor.c: In function ‘cheesifyMultithreading’:
PixelProcessor.c:487:1: warning: control reaches end of non-void function [-Wreturn-type]
}
我们需要更多信息。请执行以下操作:
使用“-g”重新编译,以获得调试信息。包括“-Wall -pedantic”以获得额外的编译器警告
示例:gcc -g -Wall -pedantic -o myprog myprog.c
用你的“gcc”命令更新你的post,你得到的编译器警告。
运行 你的程序。如果还是崩溃,用gdb进一步分析:
示例:gdb ./myprog
输入“r”执行。崩溃后键入“bt”以获取堆栈跟踪。 Copy/paste 堆栈跟踪到您的 post。
这里有几个有用的链接:
- GNU Debugger Tutorial
- How to automatically generate a stacktrace when my program crashes
- Debugging Segmentation Faults and Pointer Problems
我的代码可以编译并且 运行 在我的 IDE 中没问题。 但是,当我使用 gcc 编译然后 运行 我的 a.out 文件时,它说 Segmentation fault (core dumped).
(编辑以包含我的代码)
在 main.c 我已经注释掉了我所有的代码,它仍然会导致段错误。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#include <pthread.h>
#include "BmpProcessor.h"
#include "PixelProcessor.h"
#include "PpmProcessor.h"
#include "debug.h"
#define THREAD_COUNT 8;
int main(int argc, char *argv[]) {
/** commented out all of my code */
return 0;
}
知道为什么吗? None 我包含的其他文件有一个主要方法。
调试细节
gcc -g -Wall -pedantic -o PurdyImageProcessor PurdyImageProcessor.c BmpProcessor.c PpmProcessor.c PixelProcessor.c -lm -pthread
PixelProcessor.c: In function ‘boxBlurMultithreading’:
PixelProcessor.c:437:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
PixelProcessor.c: In function ‘cheesifyMultithreading’:
PixelProcessor.c:487:1: warning: control reaches end of non-void function [-Wreturn-type]
}
我们需要更多信息。请执行以下操作:
使用“-g”重新编译,以获得调试信息。包括“-Wall -pedantic”以获得额外的编译器警告
示例:
gcc -g -Wall -pedantic -o myprog myprog.c
用你的“gcc”命令更新你的post,你得到的编译器警告。
运行 你的程序。如果还是崩溃,用gdb进一步分析:
示例:
gdb ./myprog
输入“r”执行。崩溃后键入“bt”以获取堆栈跟踪。 Copy/paste 堆栈跟踪到您的 post。
这里有几个有用的链接:
- GNU Debugger Tutorial
- How to automatically generate a stacktrace when my program crashes
- Debugging Segmentation Faults and Pointer Problems