【发布时间】:2014-02-04 07:20:20
【问题描述】:
我希望能够打印 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,请不要为此付出努力……这将证明是徒劳的(单步执行毫无意义)。
【问题讨论】:
标签: c linux linux-kernel stack-trace