2017-11-09 4 views
0

저는 x86 용 OpenWrt를 구축했으며 가상으로 실행하기 위해 QEMU를 사용하고 있습니다.이 시스템을 실시간으로 디버깅하려고합니다. 네트워크 트래픽 등을 볼 필요가 있습니다.QEMU에서 임베디드 시스템의 실행을 어떻게 추적 할 수 있습니까?

gdb를 원격으로 연결하고 (주로) 단계별로 중단 점을 실행할 수 있습니다. 그래도 추적 점이 필요해. 나는 실행을 중단하고 느슨한 네트워크 흐름을 원하지 않는다. tstart를 사용하여 추적 점을 설정하려고하면 "대상에서이 명령을 지원하지 않습니다."라는 메시지가 나타납니다. 나는 gdb 문서를 읽었으며 QEMU에서 정상적인 실행을 가로 채기 위해 실행되는 gdb 스텁이 추적 점을 지원하지 않는다고 말할 수있다.

여기에서 나는 다른 도구를보고 시작하여 PANDA (https://github.com/panda-re/panda)를 건너 뛰었습니다. 내가 알고 있듯이 PANDA는 로그에서 전체 시스템 추적을 캡처하고 재생을 허용합니다. 나는이 도구가 내가 원하는 것을하기로되어 있다고 생각하지만, 결과를 재생하는 것처럼 보이지 않는다. 나는 로그를보고, 나는 단지 그것을 재생할 수 없다.

지금은 실제로 실행중인 임베디드 시스템을 추적해야하는 다른 도구/옵션에 조금 얽혀 있습니다. 추천할만한 도구가 있습니까? 아니면 내가 놓친 다른 방법이 있을까요?

답변

0

OpenWrt에서는 ftrace로 빌드 할 수 있습니다. Ftrace에는 필자가 요구하는 기능 중 상당 부분이 있지만 전부는 아닙니다.

ftrace로 빌드하려면 빌드 메뉴에서 ftrace 옵션을 선택해야합니다. 또한 사용할 수 있어야하는 다양한 추적 옵션이 있습니다.

추적-CMD (ftrace)를 추적 지원 menuconfig를 받고있다

가/글로벌 빌드 설정/지원 추적과 커널 컴파일 menuconfig를/개발에 위치하고 있으며 포함되어 있습니다 : 추적 시스템 호출, 추적 프로세스 컨텍스트 스위치 및 이벤트 , 함수 트레이서 (함수 그래프 트레이서, 동적으로 함수 추적 추적 및 함수 프로파일 러)

데이터 함수 호출뿐만 아니라 함수에도 전달됩니다.

1

시스템 호출 및 신호를보고 싶다면 strace를 사용하십시오. Strace는 실행중인 프로세스와 함께 사용할 수도 있으며 필요한 경우 출력을 로그 파일에 저장할 수 있습니다.

+0

strace를 살펴 보겠습니다. 이미 OpenWrt의 패키지입니까? 나는 그것이 그렇게 할 수 있다고 생각합니다. – FirmwareRootkits

+0

예, menuconfig를 만들고 strace를 검색하십시오. – VivekD

관련 문제