亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qcrashhandler.cpp

?? QT 開發(fā)環(huán)境里面一個很重要的文件
?? CPP
字號:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the QtCore module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************//************************************************************************* * * stacktrace.c 1.2 1998/12/21 * * Copyright (c) 1998 by Bjorn Reese <breese@imada.ou.dk> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER. * ************************************************************************/#include "qplatformdefs.h"#include "private/qcrashhandler_p.h"#include "qbytearray.h" // for qvsnprintf()#include <stdio.h>#include <signal.h>#include <stdlib.h>QtCrashHandler QSegfaultHandler::callback = 0;#if defined(__GLIBC__) && (__GLIBC__ >= 2) && !defined(__UCLIBC__)# include "qstring.h"# include <execinfo.h>static void print_backtrace(FILE *outb){    void *stack[128];    int stack_size = backtrace(stack, sizeof(stack) / sizeof(void *));    char **stack_symbols = backtrace_symbols(stack, stack_size);    fprintf(outb, "Stack [%d]:\n", stack_size);    if(FILE *cppfilt = popen("c++filt", "rw")) {        dup2(fileno(outb), fileno(cppfilt));        for(int i = stack_size-1; i>=0; --i)            fwrite(stack_symbols[i], 1, strlen(stack_symbols[i]), cppfilt);        pclose(cppfilt);    } else {        for(int i = stack_size-1; i>=0; --i)            fprintf(outb, "#%d  %p [%s]\n", i, stack[i], stack_symbols[i]);    }}static void init_backtrace(char **, int){}#else /* Don't use the GLIBC callback *//* Code sourced from: */#include <stdarg.h>#include <string.h>#include <errno.h>#include <sys/types.h>#include <sys/wait.h>#if defined(Q_OS_IRIX) && defined(USE_LIBEXC)# include <libexc.h>#endifstatic char *globalProgName = NULL;static bool backtrace_command(FILE *outb, const char *format, ...){    bool ret = false;    char buffer[50];    /*     * Please note that vsnprintf() is not ASync safe (ie. cannot safely     * be used from a signal handler.) If this proves to be a problem     * then the cmd string can be built by more basic functions such as     * strcpy, strcat, and a home-made integer-to-ascii function.     */    va_list args;    char cmd[512];    va_start(args, format);    qvsnprintf(cmd, 512, format, args);    va_end(args);    char *foo = cmd;#if 0    foo = "echo hi";#endif    if(FILE *inb = popen(foo, "r")) {        while(!feof(inb)) {            int len = fread(buffer, 1, sizeof(buffer), inb);            if(!len)                break;            if(!ret) {                fwrite("Output from ", 1, strlen("Output from "), outb);                strtok(cmd, " ");                fwrite(cmd, 1, strlen(cmd), outb);                fwrite("\n", 1, 1, outb);                ret = true;            }            fwrite(buffer, 1, len, outb);        }        fclose(inb);    }    return ret;}static void init_backtrace(char **argv, int argc){    if(argc >= 1)        globalProgName = argv[0];}static void print_backtrace(FILE *outb){    /*     * In general dbx seems to do a better job than gdb.     *     * Different dbx implementations require different flags/commands.     */#if defined(Q_OS_AIX)    if(backtrace_command(outb, "dbx -a %d 2>/dev/null <<EOF\n"                         "where\n"                         "detach\n"                         "EOF\n",                         (int)getpid()))        return;    if(backtrace_command(outb, "gdb -q %s %d 2>/dev/null <<EOF\n"                         "set prompt\n"                         "where\n"                         "detach\n"                         "quit\n"                         "EOF\n",                         globalProgName, (int)getpid()))        return;#elif defined(Q_OS_FREEBSD)    /*     * FreeBSD insists on sending a SIGSTOP to the process we     * attach to, so we let the debugger send a SIGCONT to that     * process after we have detached.     */    if(backtrace_command(outb, "gdb -q %s %d 2>/dev/null <<EOF\n"                         "set prompt\n"                         "where\n"                         "detach\n"                         "shell kill -CONT %d\n"                         "quit\n"                         "EOF\n",                         globalProgName, (int)getpid(), (int)getpid()))        return;#elif defined(Q_OS_HPUX)    /*     * HP decided to call their debugger xdb.     *     * This does not seem to work properly yet. The debugger says     * "Note: Stack traces may not be possible until you are     *  stopped in user code." on HP-UX 09.01     *     * -L = line-oriented interface.     * "T [depth]" gives a stacktrace with local variables.     * The final "y" is confirmation to the quit command.     */    if(backtrace_command(outb, "xdb -P %d -L %s 2>&1 <<EOF\n"                         "T 50\n"                         "q\ny\n"                         "EOF\n",                         (int)getpid(), globalProgName))        return;    if(backtrace_command(outb, "gdb -q %s %d 2>/dev/null <<EOF\n"                         "set prompt\n"                         "where\n"                         "detach\n"                         "quit\n"                         "EOF\n",                         globalProgName, (int)getpid()))        return;#elif defined(Q_OS_IRIX)    /*     * "set $page=0" drops hold mode     * "dump ." displays the contents of the variables     */    if(backtrace_command(outb, "dbx -p %d 2>/dev/null <<EOF\n"                         "set \\$page=0\n"                         "where\n"# if !defined(__GNUC__)                         /* gcc does not generate this information */                         "dump .\n"# endif                         "detach\n"                         "EOF\n",                         (int)getpid()))        return;# if defined(USE_LIBEXC)    if(trace_back_stack_and_print())        return;# endif    if(backtrace_command(outb, "gdb -q %s %d 2>/dev/null <<EOF\n"                         "set prompt\n"                         "where\n"                         "echo ---\\n\n"                         "frame 5\n"      /* Skip signal handler frames */                         "set \\$x = 50\n"                         "while (\\$x)\n" /* Print local variables for each frame */                         "info locals\n"                         "up\n"                         "set \\$x--\n"                         "end\n"                         "echo ---\\n\n"                         "detach\n"                         "quit\n"                         "EOF\n",                         globalProgName, (int)getpid()))        return;#elif defined(Q_OS_OSF)    if(backtrace_command(outb, "dbx -pid %d %s 2>/dev/null <<EOF\n"                         "where\n"                         "detach\n"                         "quit\n"                         "EOF\n",                         (int)getpid(), globalProgName))        return;    if(backtrace_command(outb, "gdb -q %s %d 2>/dev/null <<EOF\n"                         "set prompt\n"                         "where\n"                         "detach\n"                         "quit\n"                         "EOF\n",                         globalProgName, (int)getpid()))        return;#elif defined(Q_OS_SCO)    /*     * SCO OpenServer dbx is like a catch-22. The 'detach' command     * depends on whether ptrace(S) support detaching or not. If it     * is supported then 'detach' must be used, otherwise the process     * will be killed upon dbx exit. If it isn't supported then 'detach'     * will cause the process to be killed. We do not want it to be     * killed.     *     * Out of two evils, the omission of 'detach' was chosen because     * it worked on our system.     */    if(backtrace_command(outb, "dbx %s %d 2>/dev/null <<EOF\n"                         "where\n"                         "quit\nEOF\n",                         globalProgName, (int)getpid()))        return;    if(backtrace_command(outb, "gdb -q %s %d 2>/dev/null <<EOF\n"                         "set prompt\n"                         "where\n"                         "detach\n"                         "quit\n"                         "EOF\n",                         globalProgName, (int)getpid()))        return;#elif defined(Q_OS_SOLARIS)    if(backtrace_command(outb, "dbx %s %d 2>/dev/null <<EOF\n"                         "where\n"                         "detach\n"                         "EOF\n",                         globalProgName, (int)getpid()))        return;    if(backtrace_command(outb, "gdb -q %s %d 2>/dev/null <<EOF\n"                         "set prompt\n"                         "where\n"                         "echo ---\\n\n"                         "frame 5\n"      /* Skip signal handler frames */                         "set \\$x = 50\n"                         "while (\\$x)\n" /* Print local variables for each frame */                         "info locals\n"                         "up\n"                         "set \\$x--\n"                         "end\n"                         "echo ---\\n\n"                         "detach\n"                         "quit\n"                         "EOF\n",                         globalProgName, (int)getpid()))        return;    if(backtrace_command(outb, "/usr/proc/bin/pstack %d",                         (int)getpid()))        return;    /*     * Other Unices (AIX, HPUX, SCO) also have adb, but     * they seem unable to attach to a running process.)     */    if(backtrace_command(outb, "adb %s 2>&1 <<EOF\n"                         "0t%d:A\n" /* Attach to pid */                         "\\$c\n"   /* print stacktrace */                         ":R\n"     /* Detach */                         "\\$q\n"   /* Quit */                         "EOF\n",                         globalProgName, (int)getpid()))        return;#else /* All other platforms */    /*     * TODO: SCO/UnixWare 7 must be something like (not tested)     *  debug -i c <pid> <<EOF\nstack -f 4\nquit\nEOF\n     */# if !defined(__GNUC__)    if(backtrace_command(outb, "dbx %s %d 2>/dev/null <<EOF\n"                         "where\n"                         "detach\n"                         "EOF\n",                         globalProgName, (int)getpid()))        return;# endif    if(backtrace_command(outb, "gdb -q %s %d 2>/dev/null <<EOF\n"                         "set prompt\n"                         "where\n"#if 0                         "echo ---\\n\n"                         "frame 4\n"                         "set \\$x = 50\n"                         "while (\\$x)\n"                         "info locals\n"                         "up\n"                         "set \\$x--\n"                         "end\n"                         "echo ---\\n\n"#endif                         "detach\n"                         "quit\n"                         "EOF\n",                         globalProgName, (int)getpid()))        return;#endif    const char debug_err[] = "No debugger found\n";    fwrite(debug_err, strlen(debug_err), 1, outb);}/* end of copied code */#endifvoid qt_signal_handler(int sig){    signal(sig, SIG_DFL);    if(QSegfaultHandler::callback) {        (*QSegfaultHandler::callback)();        _exit(1);    }    FILE *outb = stderr;    if(char *crash_loc = ::getenv("QT_CRASH_OUTPUT")) {        if(FILE *new_outb = fopen(crash_loc, "w")) {            fprintf(stderr, "Crash (backtrace written to %s)!!!\n", crash_loc);            outb = new_outb;        }    } else {        fprintf(outb, "Crash!!!\n");    }    print_backtrace(outb);    if(outb != stderr)        fclose(outb);    _exit(1);}voidQSegfaultHandler::initialize(char **argv, int argc){    init_backtrace(argv, argc);    struct sigaction SignalAction;    SignalAction.sa_flags = 0;    SignalAction.sa_handler = qt_signal_handler;    sigemptyset(&SignalAction.sa_mask);    sigaction(SIGSEGV, &SignalAction, NULL);    sigaction(SIGBUS, &SignalAction, NULL);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久er精品视频| 成人免费高清在线| 久久精品国产精品亚洲红杏| 一区二区视频在线| 精品一区二区三区蜜桃| 91网上在线视频| 7878成人国产在线观看| 国产欧美精品一区二区色综合 | 中文字幕 久热精品 视频在线| 中文字幕欧美激情一区| 免费观看一级特黄欧美大片| 成人av网站在线观看免费| 欧美日韩一区二区三区在线| 久久久综合视频| 亚洲午夜在线观看视频在线| 国产成人高清视频| 欧美日韩亚洲综合| 欧美国产日产图区| 人人超碰91尤物精品国产| 99国产精品视频免费观看| 久久精品一区二区三区不卡牛牛 | 精品电影一区二区| 亚洲伦在线观看| 国产成人在线观看| 精品国产第一区二区三区观看体验| 一区二区三区国产| 国产**成人网毛片九色| 日韩欧美在线综合网| 亚洲国产综合91精品麻豆| 亚洲国产视频直播| 一本大道久久精品懂色aⅴ| 精品国产欧美一区二区| 奇米四色…亚洲| 欧美色图片你懂的| 亚洲欧美激情在线| 大桥未久av一区二区三区中文| 97久久精品人人爽人人爽蜜臀| 国产精品水嫩水嫩| 国产精品18久久久久久vr| 欧美电影免费观看完整版| 琪琪一区二区三区| 欧美日韩精品一区二区三区蜜桃| 伊人开心综合网| 国产精品一区专区| 久久蜜桃一区二区| 国产激情偷乱视频一区二区三区| 精品国产一区二区三区av性色 | 欧美男女性生活在线直播观看| 亚洲丝袜另类动漫二区| 91在线无精精品入口| 亚洲四区在线观看| 91在线观看美女| 亚洲毛片av在线| 欧美日韩一级视频| 久久9热精品视频| 精品国产一区二区三区久久影院| 久久精品99国产精品| 欧美成人欧美edvon| 国产精品一区二区免费不卡 | 精品国产伦一区二区三区观看方式| 日韩电影在线观看电影| 91精品免费在线观看| 国产乱码精品一区二区三区忘忧草| 久久婷婷久久一区二区三区| 国内一区二区在线| 欧美激情中文字幕| 色噜噜狠狠成人中文综合| 亚洲免费电影在线| 欧美日韩国产系列| 精品一区二区免费在线观看| 久久久久9999亚洲精品| 99精品国产99久久久久久白柏 | 欧美精品第1页| 国产91在线|亚洲| 欧美国产精品专区| 成人性生交大片免费看中文| 曰韩精品一区二区| 欧美精品一区二区精品网| voyeur盗摄精品| 男女激情视频一区| 亚洲激情成人在线| 久久先锋影音av鲁色资源网| 色999日韩国产欧美一区二区| 免费看欧美女人艹b| 亚洲欧美日韩综合aⅴ视频| 91精品久久久久久久99蜜桃| 成人av电影免费在线播放| 日韩电影免费在线看| 亚洲精品国产品国语在线app| 久久天天做天天爱综合色| 精品视频1区2区| 91香蕉视频mp4| 国产成人精品免费一区二区| 青青草成人在线观看| 亚洲精品福利视频网站| 久久精品欧美一区二区三区麻豆 | 91社区在线播放| 久久成人羞羞网站| 婷婷丁香激情综合| 一区二区三区免费| 亚洲日本欧美天堂| 国产女人aaa级久久久级| 欧美成人乱码一区二区三区| 欧美肥妇bbw| 欧美色国产精品| 色先锋资源久久综合| 99国产精品99久久久久久| 国产不卡视频一区二区三区| 国产综合色产在线精品| 狠狠色狠狠色合久久伊人| 久久精品国产亚洲aⅴ| 日韩影院精彩在线| 日韩电影一二三区| 麻豆精品新av中文字幕| 免费不卡在线观看| 久久精品国产亚洲aⅴ| 精品一区精品二区高清| 欧美a一区二区| 久久99精品久久久久婷婷| 麻豆精品视频在线观看免费| 卡一卡二国产精品 | 51精品国自产在线| 在线播放欧美女士性生活| 欧美一区二区三区免费在线看| 777xxx欧美| 久久综合中文字幕| 国产三级精品三级在线专区| 国产日韩欧美综合在线| 国产精品免费视频一区| 中文字幕一区二区三区精华液 | 精品日韩99亚洲| 国产亚洲欧美色| 亚洲国产精品t66y| 亚洲精品v日韩精品| 亚洲大片精品永久免费| 男女男精品网站| 国产999精品久久久久久| 99久久婷婷国产精品综合| 色婷婷av一区二区三区gif| 欧美肥妇bbw| 国产色综合久久| 国产精品欧美久久久久无广告 | 欧美三级日韩在线| 日韩欧美在线综合网| 国产婷婷色一区二区三区四区 | 日本一区二区三区电影| 亚洲视频免费在线观看| 亚洲一区二区视频在线观看| 日韩中文字幕亚洲一区二区va在线| 久久成人av少妇免费| 99九九99九九九视频精品| 欧美日韩成人高清| 国产欧美日本一区视频| 亚洲一区二区三区激情| 国产一区高清在线| 欧洲精品一区二区| 国产亚洲成av人在线观看导航| 亚洲精品国产第一综合99久久| 麻豆精品一区二区三区| 99国产精品久久久久| 精品国产91亚洲一区二区三区婷婷| 国产精品你懂的| 久久91精品国产91久久小草| 色综合久久中文字幕| 精品国精品国产尤物美女| 亚洲乱码中文字幕综合| 国产一区在线不卡| 欧美军同video69gay| 国产精品国产三级国产三级人妇| 另类调教123区| 欧美私人免费视频| 国产精品久久久久精k8| 国产麻豆成人传媒免费观看| 欧美精三区欧美精三区| 1000部国产精品成人观看| 国产一级精品在线| 7777精品伊人久久久大香线蕉的 | 国产精品影音先锋| 日韩欧美在线观看一区二区三区| 一二三区精品视频| 成人黄色网址在线观看| 精品国产免费视频| 美女高潮久久久| 88在线观看91蜜桃国自产| 亚洲一区二区综合| 色综合久久中文综合久久牛| 中文字幕不卡一区| 国产成人亚洲综合色影视| 亚洲精品在线观看视频| 日本不卡123| 欧美精品久久久久久久久老牛影院| 1000精品久久久久久久久| eeuss鲁片一区二区三区| 国产精品午夜在线| 成人高清免费观看| 国产精品久久午夜| 91天堂素人约啪| 亚洲精品美腿丝袜| 色88888久久久久久影院野外| 亚洲色图一区二区|