我希望能够在Linux内核中打印线程的堆栈跟踪。如何在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不是面向对象的语言,事情开始看起来很难理解,更别说没有一个体面的IDE可以分析C代码了。我不想在调试器下开始运行Linux。注意:如果你是一个内核开发newb并且想要在调试器下运行Linux,不要付出努力......它将被证明是徒劳无功的(步调毫无意义)。
谢谢!做得很好! – hebbo