내 코드에서 일부 기능을 디버깅하려고합니다. 불행하게도, gdb는 시스템에서 사용할 수 없기 때문에 현재는 디버그가 printk 메시지 (리눅스 커널 드라이버)에 의해 수행됩니다.어디에서 함수가 호출되었는지 어떻게 알 수 있습니까?
일부 매개 변수로 호출되는 함수가 있습니다. 함수를 호출 한 사람과 방법을 알 수 있는지 알고 싶습니다.
감사합니다.
내 코드에서 일부 기능을 디버깅하려고합니다. 불행하게도, gdb는 시스템에서 사용할 수 없기 때문에 현재는 디버그가 printk 메시지 (리눅스 커널 드라이버)에 의해 수행됩니다.어디에서 함수가 호출되었는지 어떻게 알 수 있습니까?
일부 매개 변수로 호출되는 함수가 있습니다. 함수를 호출 한 사람과 방법을 알 수 있는지 알고 싶습니다.
감사합니다.
스택 덤프를 사용하면 스택과 통화 추적을 볼 수 있습니다. dump_stack() 함수를 사용하여 기본 콘솔에서 스택과 호출 추적을 인쇄 할 수 있습니다. 또한 Ctags는와 cscope의에 의해 코드를 오프라인으로 읽을 수
:
은 보라.vim에서 cscope fc Function_name을 사용하면 호출 추적을 얻을 수 있습니다.
Windows에서는 Source Insight를 시도 할 수 있습니다.
GCC는 __builtin_return_address
기능을 제공합니다.
__builtin_return_address(0)
은 호출 기능 내에서 호출 사이트 주소를 제공해야합니다. /proc/kallsyms
에서 가장 가까운 값을 검색하여 함수를 찾으십시오.
커널 코드에서 dump_stack()을 호출하는 것이 좋습니다.