Guillermo Austin Kim
Posts
998 posts[GDB] Arm(Armv7): C 코드와 어셈블리 코드를 동시에 디버깅하기
이번 포스트에서는 GDB를 사용해 디버깅을 하는 방법을 소개합니다. 소개된 내용을 참고하면 즐겁게 어셈블리 명령어를 디버깅할 수 있습니다. 환경: 라즈베리 파이4 GDB 실행 아래 명령어를 사용해 GDB를 Text User Interface 모드로 실행합니다. $ gdb -tui armv7_aapcs_proc 다음은 위 명령어로 실행한 화면입니다. 이제 바로 다음 명령어를 입력해 어셈블리 명령어 창을 보이도록 합시다. $ layout split 이번에는 'b main'와 'r' 명령어를 입력해 main() 함수에 브레이크 포인트를 걸고 프로그램을 실행합니다. 위 명령어를 입력하면 다음과 같은 화면이 보입니다. 위 화면과 같이 main() 함수의 첫 번째 라인에 브레
[IT] 개발자로써 커리어를 관리하고 키우기 어려운 이유 - 1
종종 현업 개발자들이랑 만나면, 듣는 이야기가 있습니다. "개발자로써 커리어를 관리하기 어렵다." "지금 하고 있는 개발 스킬을 다른 회사에서 활용할 수 있을까?" 개발자들끼리 조금 진지하게 대화를 나누면 나오는 주제입니다. 물론 저도 이런 고민을 수도 없이 했는데요. 종종 "개발자로써 커리어를 관리하기 어려운 이유가 무엇인가"에 대해 생각해 봤습니다. 가끔은 다른 회사의 임원이나 관리자분들을 만날 기회가 있었는데, 그 분들과 대화를 나누니 무엇인가 퍼즐이 맞춰진다는 느낌을 받았습니다. 그 퍼즐은 바로 "개발자의 커리어 관리"입니다. 많은 분들이 취준생들에게 어찌보면 포괄적이고 두루뭉실한 조언을 많이 합니다. 그것은; "열심히 노력해라. 노력한 만큼 보상이 주어지는 게 소프트웨어 개
[리눅스] 프로세스를 지정한 CPU에서 실행: sched_setaffinity() 함수
소형 임베디드 장비를 제외하고는 대부분 시스템은 멀티 CPU 코어 환경에서 개발됩니다. 멀티 프로세스(Multiprocess) 기반으로 작성된 데몬을 실행하면 여러 CPU 코어에 적당히 나뉘어 실행되는 것을 쉽게 볼 수 있습니다. CPU0에서 실행됐다가 CPU2에서 실행되는 것이죠. 그런데 가끔은 특정 작업을 수행하는 프로세스가 특정 CPU 코어에서 실행되도록 설정해야 할 때가 있습니다. 여러가지 이유가 있지만 요약하면 다음과 같습니다. * 실행하는 프로세스와 관련된 인터럽트가 특정 CPU 코어에서만 트리거됨(IRQ Affinity라고 하죠.) * 프로세스가 여러 CPU 코어에 옮겨 다니면서 실행할 때 요구되는 오버헤드(마이그레이션)을 최소화하자 참고로 커널이 프로세스를 어떤 CPU 코어에
[공유] 라즈비안 커널 빌드 스크립트 파일
'디버깅을 통해 배우는 리눅스 커널의 구조와 원리'의 저자 김동현입니다. 2장에서 라즈비안 커널 소스를 내려받고 빌드하는 과정에서 어려움을 겪고 있는 독자분들이 있는데요.블로그에 댓글이나 이메일로 문제 현상을 알려주셨습니다. 그런데 대부분의 경우 빌드 스크립트를 입력하시다가 오타를 입력해 라즈비안 커널이 제대로 설치가 되지 않는 현상을 겪고 계신 것 같아요. 빌드 스크립트를 입력하는 도중에 오타를 입력하면 제대로 라즈비안 커널이 빌드가 되지 않아 불필요한 고생할 수 있습니다. 사실 2.3.3절에 소개된 build_rpi_kernel.sh와 install_rpi_kernel_img.sh 파일은 라즈비안 커널을 손쉽게 빌드하기 위해 작성된 빌드 스크립트이니, 일일이 명령어를 입력할 필요가 없습니다. 따
[리눅스커널] 유튜브 동영상: TRACE32로 프로세스의 콜 스택 확인해보기(v.f /task 0xF1618000)
이번에는 TRACE32로 프로세스의 콜 스택을 보는 내용을 설명하는 강의 동영상입니다. 동영상 참고하셔서, 즐겁게 리눅스 커널을 디버깅하셨으면 좋겠네요.


