如何打印内核堆栈';linux中使用pid和不使用pid的进程的上下地址

如何打印内核堆栈';linux中使用pid和不使用pid的进程的上下地址,linux,linux-kernel,linux-device-driver,Linux,Linux Kernel,Linux Device Driver,如何在linux中为每个进程打印内核堆栈的上下地址 使用pid和 不使用pid 您可能需要理解代码。(对于稍旧的内核,现在堆栈大小已增加到16K) 内核堆栈从页面顶部开始,向下增加,x86点上的%esp(或x86_64上的%rsp)增加到堆栈底部。也可以按如下方式导出当前宏 current macro == current_thread_info(%esp)->task current->pid == (current_thread_info(%esp)->task)->

如何在linux中为每个进程打印内核堆栈的上下地址

  • 使用pid和
  • 不使用pid

  • 您可能需要理解代码。(对于稍旧的内核,现在堆栈大小已增加到16K)

    内核堆栈从页面顶部开始,向下增加,x86点上的
    %esp
    (或x86_64上的%rsp)增加到堆栈底部。也可以按如下方式导出当前宏

    current macro == current_thread_info(%esp)->task
    current->pid == (current_thread_info(%esp)->task)->pid
    
    正如您所知道的堆栈底部一样,您需要添加/减去页数以获得内核堆栈的顶部(使用%esp或%rsp取决于您的arch)