[리눅스커널][디버깅] 임베디드 디버거 전설 Trace32
By Guillermo Austin Kim | 2019년 3월 21일 |
임베디드 디버거 전설 Trace32 Trace32(T32)는 임베디드 소프트웨어에서 많이 쓰고 있는 전설적인 디버깅 프로그램입니다.다른 RTOS 개발에도 Trace32를 많이 쓰고 있으며 대부분 임베디드 개발자는 Trace32를 다룰 줄 압니다. 실전 개발에서는 너무나 유명하고 인기 있는 디버깅 프로그램이니 신입 개발자들은 잘 숙지하도록 합시다. Trace32는 여러 가지 강력한 디버깅 기능과 다양한 명령어를 지원합니다.세부 내용은 이 책의 범위를 넘어서므로 다루지 않습니다. 실전 개발에 적용할 수 있는 Trace32 사용법(커널 크래시 디버깅)은 저의 개인 Youtube 채널로 방문하면 됩니다. 이 책에서는 Trace32 시뮬레이터 기능을 활용해 커널 자료 구조를 소개합니다. 신입 개발자가 참고할만
[리눅스커널] 메모리관리/디버깅: kmalloc() 함수로 메모리 할당 후 슬랩 캐시 종류 확인하기
By Guillermo Austin Kim | 2019년 9월 3일 |
이번 소절에서는 가상주소를 물리주소로 변환하는 과정을 실습으로 알아봅시다. 3장 3.6 절에 소개한 rpi_debugfs.c 소스를 활용해 실습을 진행합니다. 먼저 rpi_debugfs.c 소스를 입력하고 커널 빌드를 하시기 바랍니다. 패치 코드 입력 방법 알아보기 먼저 입력할 패치 코드부터 소개합니다.[drivers/soc/bcm/rpi_debugfs.c] 01 static int rpi_kernel_debug_stat_set(void *data, u64 val)02 {03 int ret;04 05 raspbian_debug_state = (uint32_t)val;06 07 if ( raspbian_debug_state == 1402 ) {08 unsigned long ph
[리눅스커널][SoftIRQ] Soft IRQ 컨택스트에 대해서 - in_softirq()
By Guillermo Austin Kim | 2019년 4월 14일 |
6.10 Soft IRQ 컨택스트에 대해서 인터럽트가 발생한 후 인터럽트 핸들러가 실행 중인 상태를 인터럽트 컨택스트라고 합니다. 이와 마찬가지로 Soft IRQ 서비스를 실행 중인 상태를 Soft IRQ 컨택스트라고 부릅니다. 이번 절에서는 Soft IRQ 컨택스트 시작 시점과 관련 자료구조에 대해서 살펴보겠습니다. 6.10.1 Soft IRQ 컨택스트 시작점은 어디인가? Soft IRQ 컨택스트는 Soft IRQ 서비스를 실행할 때 활성화됩니다. Soft IRQ 서비스는 __do_softirq() 함수에서 실행하니 다음 코드를 보면서 Soft IRQ 컨택스트 활성화 시점을 알아봅시다.[https://elixir.bootlin.com/linux/v4.19.30/source/kernel/softirq.
[Python] PyCharm에서 임의의 코드를 디버깅하는 방법
By 지훈현서 | 2018년 5월 8일 |
파이썬에서 특정 문자열의 코드를 수행시키려면,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에서 해당 코드를디버깅 할 수 있는 방법이 없