디버깅
Posts
24 posts[리눅스커널][디버깅] 커널 디버깅이란 무엇인가?
디버깅은 '디버그'와 'ing' 합성어로 버그를 잡는 과정을 뜻합니다. 누군가 '디버깅을 하고 있다.' 라고 말하면 '버그를 수정하고 있다.'고 볼 수 있습니다. 이번 절에서 디버깅 방법을 소개하기 전 디버깅이 중요한 이유를 다음 관점으로 알아보겠습니다. 문제 해결 능력 커널 코드 학습 능력 필자는 디버깅을 단지 버그를 잡는 과정으로만 보지 않습니다. 리눅스 커널과 드라이버가 정상 동작할 때 자료구조와 함수 호출까지 파악하는 과정을 디버깅이라고 생각합니다. 그 이유를 더 알아볼까요? 디버깅은 문제 해결을 키우는 지름길 신입 개발자들은 실전 리눅스 개발에서 어떤 업무를 하는지 궁금해합니다. 임베디드 리눅스는 ‘클라우드 서버’, ‘휴대폰’, ‘자동차’ 까지 다양한 분야에서 쓰고 있습니다. 따라서 실전
[리눅스커널][Trace32] wakelock 디버깅 - container_of
[crash-utility] wakelock 디버깅(rbtree: wakelocks_tree)[crash-utility]wakelock - rbtree debugging(디버깅) [리눅스커널][Trace32] wakelock 디버깅 - container_of[Kernel] wakelock debug patch 이번 시간에는 wakeup_sources이란 링크드 리스트를 통해 wakelock 디버깅을 합시다.이전에는 crash-utility를 썻는데 이번에는 Trace32를 쓰겠습니다. 개발자는 다양한 툴을 써야 한 가지 툴에 종속된 노예 개발자가 되는 것을 피할 수 있습니다.또한 각 툴의 장점을 잘 활용할 수도 있습니다. 먼저, 다음 T32 명령어를 입력해서 offsetof와 container_of
[라즈베리파이] 인터럽트 디버깅 - 인터럽트 핸들러 파악 #CS
우리는 다음 __handle_irq_event_percpu 함수 13번째 코드에서 인터럽트 핸들러가 호출된다고 배웠습니다. 1 irqreturn_t __handle_irq_event_percpu(struct irq_desc *desc, unsigned int *flags)2 {3 irqreturn_t retval = IRQ_NONE;4 unsigned int irq = desc->irq_data.irq;5 struct irqaction *action;67 record_irq_time(desc);89 for_each_action_of_desc(desc, action) {10 irqreturn_t res;1112 trace_irq_handler_entry(irq, action);13 res = act
![[Python] PyCharm에서 임의의 코드를 디버깅하는 방법](https://img.zoomtrend.com/2018/05/08/a0105618_5af183e9edef3.png)
[Python] PyCharm에서 임의의 코드를 디버깅하는 방법
파이썬에서 특정 문자열의 코드를 수행시키려면,exec(...) 빌트인 함수를 이용합니다. 예를 들어, code = """def myrun(): def sum(i, j): return i + j # pdb.set_trace() i = 1 j = 2 k = sum(i, j) print('sum of %s, %s = %s' % (i, j, k))if __name__ == '__main__': myrun()""" 위와 같은 code라는 문자열에 어느 파이썬 코드가 들어가 있다고 하였을 때, exec(code) 라고 실행하면 해당 코드가 실행됩니다. 그런데 이 방법을 이용하면 PyCharm 과 같은 IDE에서 해당 코드를디버깅 할 수 있는 방법이 없



