正常运行时,我的程序崩溃并出现分段错误.所以我用gdb运行它,但是当我这样做时它不会崩溃.有谁知道为什么会这样?我知道Valgrind的faq提到了这一点(并没有在valgrind下崩溃),但我真的找不到与谷歌中的gdb相关的任何内容.如果有人能告诉我原因,或者在发生这种情况时建议寻找一些东西,我将非常感激.
我刚刚将 Xcode 更新到 11.4,在归档项目时,它向我显示“Segmentation Fault 11”
该项目将使用 Xcode 11.3.1 进行存档,但现在它没有......
其他人遇到过同样的问题吗?
编辑:2020 年 4 月 15 日
苹果刚刚发布了 Xcode 11.4.1
文件1.c.
int a[10];
Run Code Online (Sandbox Code Playgroud)
文件main.c:
extern int *a;
int main()
{
printf("%d\n", a[0]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
给我一个段错误!出了什么问题?
出于调试目的,我需要测试指针以查看它是否指向有效的可读页面.目前我正在解析/ proc/[pid]/maps以查看地址是否映射好,但这看起来有点啰嗦.有没有更好的办法?谢谢.
我有一个使用UIWebView和HTML5 websockets构建的iOS应用程序.该应用程序经历看似随机的崩溃.它发生在用户与其进行交互时以及在长寿测试期间,用户和应用程序之间不会发生交互.
崩溃日志都具有以下内容:
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x00000000
Run Code Online (Sandbox Code Playgroud)
并且线程日志包含:
Thread XX name: WebCore: Worker
Thread XX Crashed:
0 WebCore 0x36c8c7a0 WebCore::UserGestureIndicator::processingUserGesture() + 20
1 WebCore 0x36d7070a WebCore::DOMTimer::DOMTimer(WebCore::ScriptExecutionContext*, WTF::PassOwnPtr<WebCore::ScheduledAction>, int, bool) + 74
2 WebCore 0x36d70616 WebCore::DOMTimer::install(WebCore::ScriptExecutionContext*, WTF::PassOwnPtr<WebCore::ScheduledAction>, int, bool) + 46
3 WebCore 0x3753ae7e WebCore::WorkerContext::setTimeout(WTF::PassOwnPtr<WebCore::ScheduledAction>, int) + 30
4 WebCore 0x3731ac02 WebCore::JSWorkerContext::setTimeout(JSC::ExecState*) + 194
5 WebCore 0x37318ff6 WebCore::jsWorkerContextPrototypeFunctionSetTimeout(JSC::ExecState*) + 110
6 JavaScriptCore 0x2fa9a1d8 llint_native_call_trampoline + 62
7 JavaScriptCore 0x2faa355a JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList …Run Code Online (Sandbox Code Playgroud) 升级Pycharm 2017.2.3到Pycharm 2017.1.4Pycharm的调试器后,建议构建cpython(或者与之关联):
path/to/my/python /opt/pycharm-community-2017.1.4/helpers/pydev/setup_cython.py build_ext --inplace
在我这样做之后,Debugger现在立即返回此错误:
进程以退出代码139结束(由信号11中断:SIGSEGV)
我发现cpython有类似的问题(https://youtrack.jetbrains.com/issue/PY-23273),但我无法使用那里提到的解决方法,因为我错过了它建议删除的文件...我是不使用cython,我希望我忽略了关于构建它的消息..
我在linux上(SMP Debian 3.16.36-1+deb8u1 (2016-09-03) x86_64 GNU/Linux)
Python 2.7
奇怪的是,在调试模式下,如果脚本在通常会发生段错误(没有断点)的地方停止(通过断点),然后恢复,则不会发生段错误。很奇怪吧?
本项目使用pycharm和pygame。操作系统是 windows 10。该项目包含跨 8 个模块的约 1500 行代码,到目前为止调试效果很好。
正常运行脚本时(不在调试中)不会发生分段错误。这是发生段故障时终端的输出:
Fatal Python error: pygame_parachute: (pygame parachute) Segmentation Fault
Python runtime state: initialized
#some other threads here
Thread 0x0000490c (most recent call first):
... a long stack trace
Thread 0x00002c98 (most recent call first):
... a long stack trace
Thread 0x000048ec (most recent call first):
... a long stack trace
Current thread 0x000020d0 (most recent call first):
File "C:\Users\Solaire\PycharmProjects\Game2\ai.py", line 60 in do_ai
**File "C:/Users/Solaire/PycharmProjects/Game2/main.py", line 45 in <module>**
File "C:\Program Files\JetBrains\PyCharm …Run Code Online (Sandbox Code Playgroud) 我的Android应用程序崩溃的报告越来越多,崩溃发生在本机代码中,因此不会产生堆栈跟踪.我只有一个本机功能,这不是问题,因为它在启动过程中被调用一次,问题发生在2-3分钟后.
我从logcat获得了以下部分转储:
I/DEBUG ( 8704): pid: 9028, tid: 9136 >>> xxxx <<<
I/DEBUG ( 8704): at : (2012-10-30 21:10:42.000086303 UTC) 0
I/DEBUG ( 8704): signal 11 (SIGSEGV), fault addr deadbaad
I/DEBUG ( 8704): r0 00000000 r1 afd14691 r2 00000027 r3 00000070
I/DEBUG ( 8704): r4 afd42328 r5 00000000 r6 00000000 r7 0000a000
I/DEBUG ( 8704): r8 00000000 r9 4a77b900 10 4a77b8d8 fp 00000046
I/DEBUG ( 8704): ip 00001750 sp 4a77b590 lr deadbaad pc afd11ce4 cpsr 60000030
I/DEBUG ( 8704): d0 …Run Code Online (Sandbox Code Playgroud) 根据手册页fclose(3):
返回值
成功完成后返回0.否则,
EOF返回并设置全局变量errno以指示错误.在任何一种情况下fclose(),对流的任何进一步访问(包括另一次调用)都会导致未定义的行为.错误
EBADF底层文件描述符fp无效.该
fclose()函数也可能失败并设置errno为例程指定的任何错误close(2),write(2)或fflush(3).
当然fclose(NULL)应该失败,但我希望它能够errno正常返回,而不是直接通过分段故障死亡.这种行为有什么原因吗?
提前致谢.
更新:我将把我的代码放在这里(strerror()特别是我正在努力).
FILE *not_exist = NULL;
not_exist = fopen("nonexist", "r");
if(not_exist == NULL){
printError(errno);
}
if(fclose(not_exist) == EOF){
printError(errno);
}
Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
#define N 1024
int main(){
int i, j;
int a[N][N];
int b[N][N];
for (i=0;i<N;i++){
a[i][i]=i;
b[i][i]=i;
}
for (i=0;i<N;i++)
for(j=0;j<N;j++)
{
printf("%d", a[i][j]);
printf("%d", b[i][j]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此程序是分段错误的原因,但如果我将N定义为1023,程序将正常工作.为什么会这样?