I would like to be able to print the stack trace of a thread in the Linux kernel.
In details: I want to add code to specific functions (e.g. swap_writepage()
) that will print the complete stack trace of the thread where this function is being called. Something like this:
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;
}
My story:
Recently, Linux kernel developers started to adopt object-oriented principles when improving the kernel, which is written in C. Since C is not an OO languages things started to look very ugly and harder ti understand, let alone not having a decent IDE that can analyze C code. And I do not want to get started on running Linux under a debugger. Note: if you are a kernel development newb and want to run Linux under a debugger do not put efforts into that...it will prove to be fruitless (stepping makes no sense).
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…