EzDoum

찾기
처음으로 | 찾기 | 아카이브 | 글 올리기 | 링크 | 자료실 | 통계 | 연락처 | 자유게시판
이지도움 특집
전체보기
네트워크
TI OMAP35x
TI DaVinci
Analog Blackfin
RobotWar2005
임베디드!
캐쉬의 모든것
메모리 할당 알고리즘
CPU 파이프라이닝
자료구조(Tree)
금융

Login
이름

암호

기억하기


사용자 등록

현재 접속중인 등록 사용자는 0명, 익명 사용자는 3명 입니다.
전체 등록 사용자: 751명

마지막 답장
·libcurl + fuse 조합으로 되는게 많네. (1)
·Linux Ftrace에 관해 (3)
·Android MTP ( Media Transfer Protocol ) (1)
·Lighttpd에 인증을 digest 사용시 IE 오동작 문제? (1)
·Dtrace에 관해 (1)

최근글
·OpenSSL and multi-threads (0)
·ARM 환경에서 OpenCL 사용 (0)
·IoT용 WIFI 모듈 비교 ( MCU ) 클래스 (0)
·Glances - 리눅스 여러 가지 항목을 한 화면에서 모니터링 (0)
·plugin 방식의 로그 분석기 (0)

뜨거운 감자
·나는 인터렉티브한 환경에서 역어셈블 한다. (12)
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)
·ASP.NET의 데이터 그리드와 사용자 컨트롤 (7)
·DHTML Editing Control (7)

가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
·멀티쓰레드(Pthread) 프로그래밍
·GNU REGEX (정규표현식) 프로그래밍 강좌 (7)
·Sorting Algorithm Animation (2)
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

임베디드! - 엽기 디버깅 ㅋㅋ
글쓴이: EzDoum 글쓴날: 2005년 04월 22일 오후 12:06
하드웨어



dm642 dvr프로젝트에서 네트윅 관련 개발을 지원했다. ti 개발 보드에서 준 예제 소스를 돌리면 ndk가 문제없이 동작을 하는데, dvr보드에서는 정상적인 동작을 안했다.

ndk가 블랙박스처럼 동작을해서 어디서 문제가 생기는지 도통 알 수가 없어서 난감했다. 우선 프로젝트에서 코딩한 것을 c소스 레벨에서 디버깅하다가 ndk가 활성화 되는 부분 부터는 어셈블리 breakpoint로 따라가는 전략을 세웠다. 그런데 ndk가 한 두개의 함수로 이루어 진게 아니라서 한번 dhcpc가 동작하는 것을 추적하는데도 엄청나게 setp in/over를 해야해서 낭패.

그래서 떠오른 아이디어가 링크가 끝나고 나면 링커가 symbol map을 만들어 주어서 ndk가 사용하는 심볼 리스트를 얻고, 브레이크 포인트를 기계적으로 걸어줄 방법이 없을까 고민했는데, 빙고! command windows란 기능이 ccs에 있었다. ba란 커멘드를 사용하면 bp를 걸 수는 있고, 커멘드 리스트를 txt파일로 만들어서 배치로 로딩해서 [ take c:\batch_ba.txt ] 대량의 브레이크 포인트(약 200개) 거는 것에 성공했다.

덕분에 ndk가 함수 콜하는 것을 trace할수 있게 됬고 문제점을 발견했다. command windows를 적절히 사용하면 단순 반복 노가다를 많이 줄일 수 있을듯 하다.


[분류: 하드웨어 인쇄용 페이지 본문 email로 보내기 ]

<  소프트웨어 공학 Code Complete | MS Visual Studio 2005 beta2  >
임베디드! - 엽기 디버깅 ㅋㅋ | 답장: 1개 | 본문에 답장
정렬 :  
답장 EzDoum 2005년 04월 25일 오후 07:46 [ 이글에 답장 | 본문에 답장 | 책갈피 ]
그 문제의 t.txt

ba _MEM_alloc
ba _MEM_free
ba _MEM_init
ba _MEM_memtab
ba _MEM_valloc

ba _DHCPClose
ba _DHCPOpen
ba _dhcpBuildDecline
ba _dhcpBuildDiscover
ba _dhcpBuildOptions
ba _dhcpBuildRequest
ba _dhcpDecodeType
ba _dhcpOptionsClear
ba _dhcpPacketProcess
ba _dhcpPacketReceive
ba _dhcpPacketSend
ba _dhcpSocketClose
ba _dhcpSocketOpen
ba _dhcpState
ba _dhcpVerifyMessage



ba _CfgAddEntry
ba _CfgEntryDeRef
ba _CfgEntryGetData
ba _CfgEntryInfo
ba _CfgEntryRef
ba _CfgEntrySetData
ba _CfgExecute
ba _CfgFree
ba _CfgGetDefault
ba _CfgGetEntry
ba _CfgGetEntryCnt
ba _CfgGetImmediate
ba _CfgGetNextEntry
ba _CfgLoad
ba _CfgNew
ba _CfgRemoveEntry
ba _CfgSave
ba _CfgSetDefault
ba _CfgSetExecuteOrder
ba _CfgSetService

ba _EtherAddMCast
ba _EtherClearMCast
ba _EtherConfig
ba _EtherDelMCast
ba _EtherFree
ba _EtherGetMacAddr
ba _EtherNew
ba _EtherRxPacket
ba _EtherSetPktFilter
ba _ExecClose
ba _ExecHRef
ba _ExecLowResource
ba _ExecOpen
ba _ExecTimer
ba _FDSignalEvent
ba _FDWaitEvent
ba _HwPktClose
ba _HwPktInit
ba _HwPktOpen
ba _HwPktSetRx
ba _HwPktShutdown
ba _HwPktTxNext
ba _ICMPChecksum
ba _ICMPGenPacket
ba _ICMPInput
ba _ICMPSendRtAdv
ba _IFCreatePacket
ba _IFIndexFree
ba _IFIndexGetHandle
ba _IFIndexNew
ba _IFInit
ba _IFMaxIndex
ba _IFSetPad
ba _LLIFree
ba _LLIGenArpPacket
ba _LLIGetMacAddr
ba _LLIGetValidTime
ba _LLIMsg
ba _LLINew
ba _LLIRxPacket
ba _LLITxIpPacket
ba _LLIValidateRoute
ba _SockAccept
ba _SockBind
ba _SockCheck
ba _SockClose
ba _SockConnect
ba _SockCreatePacket
ba _SockDisconnect
ba _SockGet
ba _SockGetName
ba _SockGetPcb
ba _SockIntAbort
ba _SockListen
ba _SockNew
ba _SockNotify
ba _SockPcbAttach
ba _SockPcbBind
ba _SockPcbCleanup
ba _SockPcbConnect
ba _SockPcbCtlError
ba _SockPcbDetach
ba _SockPcbResolve
ba _SockPcbResolveChain
ba _SockPcbRtChange
ba _SockPrAttach
ba _SockPrCtlError
ba _SockPrDetach
ba _SockPrRecv
ba _SockPrSend
ba _SockPrSendOOB
ba _SockRecv
ba _SockRecvNC
ba _SockSend
ba _SockSet
ba _SockSetOOBData
ba _SockSetOOBMark
ba _SockShutdown
ba _SockSpawnAbort
ba _SockValidateRoute
ba _TaskCreate
ba _TaskDestroy
ba _TaskExit
ba _TaskGetEnv
ba _TaskSetEnv
ba _TcpChecksum
ba _TcpClose
ba _TcpDrop
ba _TcpGenPacket
ba _TcpInput
ba _TcpOutput
ba _TcpPrAttach
ba _TcpPrConnect
ba _TcpPrCtlError
ba _TcpPrDetach
ba _TcpPrDisconnect
ba _TcpPrGetOption
ba _TcpPrGetState
ba _TcpPrInherit
ba _TcpPrListen
ba _TcpPrRecv
ba _TcpPrSend
ba _TcpPrSendOOB
ba _TcpPrSetOption
ba _TcpSetPersist
ba _TcpTimeoutAdd
ba _TcpTimeoutCheck
ba _TcpTimeoutKeep
ba _TcpTimeoutPersist
ba _TcpTimeoutRemove
ba _TcpTimeoutRexmt
ba _TcpTimeoutWait2
ba _TcpValidateMetrics
ba _TcpXmitTimer
ba _TelnetClose
ba _TelnetOpen
ba _TimerFree
ba _TimerHSTick
ba _TimerNew
ba _UTL_doAbort
ba _UTL_doError
ba _UTL_doPutc
ba _UTL_halt
ba _UdpChecksum
ba _UdpInput
ba _UdpOutput

ba _mmAlloc
ba _mmBulkAlloc
ba _mmBulkFree
ba _mmCopy
ba _mmFree
ba _mmZeroInit

ba _llEnter
ba _llExit
ba _llPacketClose
ba _llPacketGetMCast
ba _llPacketGetMCastMax
ba _llPacketGetMacAddr
ba _llPacketOpen
ba _llPacketSend
ba _llPacketService
ba _llPacketSetMCast
ba _llPacketSetRxFilter
ba _llSerialClose
ba _llSerialCloseHDLC
ba _llSerialConfig
ba _llSerialHDLCPeerMap
ba _llSerialOpen
ba _llSerialOpenHDLC
ba _llSerialSendPkt
ba _llSerialService
ba _llTimerGetStartTime
ba _llTimerGetTime
ba _llTimerTick


[수정]

임베디드! - 엽기 디버깅 ㅋㅋ | 답장: 1개 | 본문에 답장
정렬 :  

답장 쓰기
글을 올리시려면 로그인 (사용자 등록) 하셔야 합니다.

검색
Google

분류
·공지 (6)
·인터넷 (87)
·하드웨어 (260)
·C/C++ (65)
·어셈블리 (7)
·리눅스 (136)
·리눅스 커널 (67)
·윈도우즈 (25)
·데이터베이스 (20)
·보안 (16)
·.NET (25)
·그래픽 (13)
·책소개 (42)
·호기심 천국 (80)
·잡담 (111)
·사랑 (3)

전체 본문수: 963
전체 답장수: 525


분류 : 하드웨어
최근글
최근글
가장 많이 읽은 글
·[Cache] 2-way Set-Associative 방식이란 무엇일까? (2)
뜨거운 감자
·SoCRobotWar 2005 - 신입생 기초 교육자료 (7)

EzDoum투표
이지도움 어때요?
이게 뭐야. 다시 안올란다. --;
아이 좋아라~ +_+;
관심없다.
먼가는 있는거 같은데 뭐하는 곳이지?
기타 (자유게시판에 글로 남겨 주세요)
[ 결과 | 투표 ]

랜덤 링크
http://kldp.net


 Home ^ BACK TO TOP ^ EzDoum - 도움이 필요하세요~??
 Powered by KorWeblog 1.5.8 Copyleft © 2001 EzDoum, 관리자: EzDoum