2014-03-19 5 views
2

나는 그러한 설정을했습니다. 나는 스펙에서 임베디드 디바이스를 프로그래밍 할 필요가있다. 비록 디바이스를 켜면 분명히 디스플레이가 리눅스 관련 아무것도 보이지 않는다 - 작은 디스플레이). 임베디드 장치에는 자체 SDK가 있습니다. 이제 valgrind를 사용하여 메모리 관리/할당을 확인하는 방법을 생각했습니다. valgrind를 사용하여 내 장치 용으로 작성된 프로그램을 확인할 수 있습니까? 내가보기에 문제는 프로그램에 일부 장치 관련 SDK 호출이 포함되어있을 수 있으므로 프로그램이 을 내 데스크탑에서 실행하는 일반적인 fedora Linux에서 실행하지 못할 수도 있다는 것입니다. 내 옵션에는 어떤 것이 있습니까?내장 된 장치에서 valgrind 사용

+0

분석 할 항목에 따라 Clang Address Sanitizer를 사용하는 것이 훨씬 빠릅니다 (valgrind는 매우 느립니다). 또는 바탕 화면에서 소프트웨어를 실행할 수 있습니다. –

답변

1

아마도.

  1. 실제로 Linux를 실행해야합니다.

  2. 하드웨어 플랫폼을 찾아냅니다. Valgrind supports quite a few platforms (모두는 아님).

  3. 플랫폼에 여유 공간 (메모리 및 CPU 속도)이 있는지 고려하십시오. Valgrind를 실행하는 것은 비용이 많이 듭니다.

모두 체크 아웃하면 Valgrind를 실행할 수 있어야합니다. 물론 대상 시스템에 가져올 수 있다고 가정합니다. 물론 build and install해야 할 수도 있습니다.

나는 일부 형태의 터미널/콘솔 액세스, 즉 직렬 포트, 텔넷 또는 대상에서 프로그램을 실행하는 데 사용할 수있는 것으로 가정합니다.

업데이트 : : 의견에 대한 의견을 토대로 특정 장치에서 Valgrind를 실행할 가능성이 의심됩니다.

+0

나는 약간 혼란 스럽다. 이 장치는 http://p.globalsources.com/IMAGES/PDT/B1054670876/POS-Terminal.jpg와 유사합니다. 하드웨어는 말한다 : 듀얼 CPU 32 비트 ARM9 CPU. 분명히이 장치를 실행할 때 (작은 화면 크기로 인해) 숫자와 문자를 거의 볼 수 없습니다 ... 그래서이 장치에서 어떻게 valgrind를 실행할 수 있습니까? 출력은 어디서 볼 수 있습니까? –

+0

[ "ARM9"(http://stackoverflow.com/questions/6378152/valgrind-on-the-arm9)에 대한이 질문을 보려면 정밀도가 더 필요합니다. – unwind

+0

기기의 사양입니다. http://s30.postimg.org/6ftarwgz5/2012051115061359.jpg. 거기에 피질을 볼 수 없습니까? 그러나 valgrind에 대한 지원이 있었다고해도이 장치에서 valgrind를 어떻게 실행합니까? 출력은 어디서 볼 수 있습니까? (이미 장치가 물리적으로 어떻게 보이는지 보여 줬습니다.) –

1

내장형 장치에서 valgrind를 실행하는 것은 불가능하지는 않더라도 매우 어려울 수 있습니다.

단위 테스트를 만들고 호스트 플랫폼에서 valgrind를 사용하여 테스트를 수행 할 수 있습니다. 이는 최소한 코드의 일부분에 대한 메모리 문제를 확인하는 방법입니다.

다른 옵션은 플랫폼 에뮬레이션을 사용하고 에뮬레이터에서 프로그램을 다시 실행하는 것입니다 (다시 호스트 시스템에서). QEMU 꽤 유명한 오픈 소스 에뮬레이터입니다.

+0

"호스트"는 어떤 플랫폼을 의미합니까? 당신이 제공 한 링크로는 쉬운 일이 아닌 것처럼 보입니다 ... 좋은 정적 검사 프로그램이 있습니까? 메모리 누수를 확인 하시겠습니까? 이 코드는 코드에서만 실행할 수 있습니다. –

+0

@dmcr_code "호스트"에서 나는 프로그램을 작성하고 컴파일하는 컴퓨터를 의미합니다. 당신이 묻는 것은 상당히 복잡한 주제입니다. 정적 체커는 일부 확장까지 도움이되지만 valgrind가 훨씬 좋습니다. –

+0

네, 그렇지만 제 호스트 컴퓨터에서 모든 코드를 실행할 수 없다고 말했습니까? 일부 코드는 장치 SDK에 대한 호출을 포함 할 수 있으므로 내 컴퓨터에서는 실행되지 않습니다. –