首页 > 运维 > linux运维 > 正文

【Linux】直接打印堆栈调试信息

雪夜
发布: 2025-04-19 20:19:58
原创
460人浏览过

直接打印堆栈调试信息

想要掌握如何在Linux环境下直接打印堆栈调试信息并找到错误代码行号吗?本文将通过一个简单的示例来详细讲解这一过程。

首先,我们来看测试代码:

#include <stdio.h>
#include <signal.h>

//信号钩子函数,获取栈信息,然后打印
void handle_segv(int signum) {
    void *array[100];
    size_t size;
    char **strings;
    size_t i;
    signal(signum, SIG_DFL);
    size = backtrace(array, 100);
    strings = (char**)backtrace_symbols(array, size);
    fprintf(stderr, "Launcher received SIG:%d Stack trace:\n", signum);
    for (i = 0; i < size; i++) {
        fprintf(stderr, "%s\n", strings[i]);
    }
    free(strings);
}

int main() {
    int *p = NULL;
    *p = 1;
    return 0;
}
登录后复制

接下来是编译步骤:

gcc -g demo.c -o demo
登录后复制

运行程序后,我们可以看到如下输出:

【Linux】直接打印堆栈调试信息

找到错误代码行号: 使用 addr2line 命令

我们以示例来展示如何使用 addr2line 命令:

微信 WeLM
微信 WeLM

WeLM不是一个直接的对话机器人,而是一个补全用户输入信息的生成模型。

微信 WeLM 33
查看详情 微信 WeLM
addr2line -a 0x4007b6 -e demo
登录后复制

运行上述命令后,我们可以得到如下的结果:

【Linux】直接打印堆栈调试信息

然后,我们回到源文件,找到对应的位置:

【Linux】直接打印堆栈调试信息

通过以上步骤,我们就能成功地在Linux环境下直接打印堆栈调试信息,并使用 addr2line 命令找到错误代码的具体行号。

以上就是【Linux】直接打印堆栈调试信息的详细内容,更多请关注php中文网其它相关文章!

相关标签:
全能打印神器
全能打印神器

全能打印神器是一款非常好用的打印软件,可以在电脑、手机、平板电脑等设备上使用。支持无线打印和云打印,操作非常简单,使用起来也非常方便,有需要的小伙伴快来保存下载体验吧!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号