zoukankan      html  css  js  c++  java
  • 在代码中调用gdb

    转载:http://blog.csdn.net/hanchaoman/article/details/5583457

    在SIGSEGV的handler中调用gdb,

    命令gdb [exec file] [pid]可以让gdb附加到这个进程上

    #include <limits.h> 
    #include <stdio.h> 
    #include <string.h> 
    #include <unistd.h>
    #include <signal.h>
    #include <stdlib.h>
    
    //获取进程名
    size_t get_executable_path( char* processdir,char* processname, size_t len) 
    { 
            char* path_end; 
            if(readlink("/proc/self/exe", processdir,len) <=0) 
                    return -1; 
            path_end = strrchr(processdir,  '/'); 
            if(path_end == NULL) 
                    return -1; 
            ++path_end; 
            strcpy(processname, path_end); 
            *path_end = ''; 
            return (size_t)(path_end - processdir); 
    }
    
    void dump(int signo)
    {
            char path[PATH_MAX];
            char processname[1024];
        char cmd[1024];
    
            bzero(path, PATH_MAX);
            bzero(processname, 1024);
        bzero(cmd, 1024);
    
            get_executable_path( path, processname, sizeof(path));
    
        snprintf(cmd, sizeof(cmd), "gdb %s %d", processname, getpid());
        printf("%s
    ", cmd);
    
        system(cmd);
    
        exit(0);
    }
    
    
    
    void test_function (void) 
    { 
        unsigned char *ptr = 0x00; 
        *ptr = 0x00; 
    } 
    
    int main (void) 
    { 
        signal(SIGSEGV, &dump);    
        
        test_function(); 
        return 0; 
    } 
  • 相关阅读:
    IPUtil
    MD5Util
    MyBatis环境配置及入门
    淘宝主页(静态页面)第3天
    淘宝主页(静态页面)第二天
    淘宝主页(静态页面)第1天
    力扣20 有效的括号
    力扣1 two sum
    JAVA可变参数
    JAVA环形队列
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/5978241.html
Copyright © 2011-2022 走看看