加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

如何在Linux内核中打印当前的线程堆栈跟踪?

发布时间:2020-12-13 19:29:07 所属栏目:Linux 来源:网络整理
导读:我希望能够在 Linux内核中打印线程的堆栈跟踪. 详细信息:我想将代码添加到特定函数(例如swap_writepage()),这些函数将打印调用此函数的线程的完整堆栈跟踪.像这样的东西: int swap_writepage(struct page *page,struct writeback_control *wbc){ /* code g
我希望能够在 Linux内核中打印线程的堆栈跟踪.

详细信息:我想将代码添加到特定函数(例如swap_writepage()),这些函数将打印调用此函数的线程的完整堆栈跟踪.像这样的东西:

int swap_writepage(struct page *page,struct writeback_control *wbc)
{

    /* code goes here to print stack trace */

    int ret = 0;

    if (try_to_free_swap(page)) {
        unlock_page(page);
        goto out;
    }
    if (frontswap_store(page) == 0) {
        set_page_writeback(page);
        unlock_page(page);
        end_page_writeback(page);
        goto out;
    }
    ret = __swap_writepage(page,wbc,end_swap_bio_write);
out:
    return ret;
}

我的故事:
最近,Linux内核开发人员在改进内核时开始采用面向对象的原则,这是用C语言编写的.由于C不是OO语言,事情开始变得非常丑陋和难以理解,更不用说没有一个体面的IDE了分析C代码.我不想开始在调试器下运行Linux.注意:如果你是一个内核开发新手,并希望在调试器下运行Linux,请不要付出努力…它将证明是徒劳的(踩踏没有意义).

解决方法

Linux内核有一个众所周知的函数叫做dump_stack() here,它打印堆栈的内容.根据堆栈信息将其放入您的函数中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读