Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[18' 이왕원] 최종보고서 #79

Open
BbChip0103 opened this issue Oct 25, 2018 · 0 comments
Open

[18' 이왕원] 최종보고서 #79

BbChip0103 opened this issue Oct 25, 2018 · 0 comments

Comments

@BbChip0103
Copy link

BbChip0103 commented Oct 25, 2018

컨트리뷰션 과정

9/30

  • 함수가 닫힐 때, 함수 이름과 인자를 같이 표시하는 기능이 있으면 어떨까 함

10/08

함수가 닫힐 때, 함수 이름과 인자를 같이 표시하는 기능을 추가하자는 이슈를 제안 (namhyung#533)
  • issue
  • 재귀함수에서는 유용하나, 그 외 경우에서는 얼마나 유용할 지 모르겠다는 답변
  • 정 필요하다면 원래 있던 '--no-comment' 옵션을 'comment=<value>'로 수정하라는 답변

10/15 ~ 10/20

uftrace 소스 분석 및 컨트리뷰션 작업을 세분화 함
  1. 함수 이름이나, 변수 이름이나, 리턴값 이런 것을 어떤 원리로 받아오고 그거에 해당하는 부분이 어딘지 찾아야 함
  2. 아규먼트 파싱하고 추가하는 부분 찾아야 함
  3. 문서수정 - 추가한 기능 명세를 문서에 추가해야 함

10/21

(2번 작업) 아규먼트 파싱하고 추가하는 부분 추가
  • argparse 라이브러리 사용하는 것을 확인되어 추가
  • 1 arg-parse
  • 2 arg-parse
(1번 작업) 따로 스택을 만들어서 문자열 저장해놓는 식으로 구현
  • 함수 이름이나, 변수 이름이나, 리턴값 받아오는 부분은 찾았으나 원리는 파악하지 못함
  • fstack 쪽인 것 같긴 한데, 파악하기엔 늦은 것 같아서 포기
  • 깔끔하지 못한 구현이라 불만족

10/23

(1번 작업) 한범님이 해당하는 부분을 고친 샘플 코드를 보내주셔서, 다시 구현
  • fstack_1
  • fstack_2
  • 함수 호출 스택을 저장해놓는 fstack이라는 구조체에 함수 인자에 해당하는 스트링 값을 백업하는 방식으로 구현
  • 이틀 전에 작업한 부분은 망설임 없이 버림

10/24

(3번 작업) 해당하는 항목의 문서 수정
  • readme_1
  • commit
  • 커밋 로그 컨벤션도 있는 듯

10/25

PR 날림 (namhyung#582)
  • pr

정기모임 날짜별 요약

08/16

Pull request 개념 설명 및 팁
  • 'Before->After' 같은 구성이면 좋음
  • 내용 적을 때 친절하게 적어야 함
  • 서로 공유하는게 중요
Issue 개념 및 팁
  • 'gcc 7으로 컴파일 했을 때, segmetation fault 발생'과 같이 어떤 상황에서 발생하는 에러인지 확실하게 명시
리눅스 커널 이야기
  • 리눅스 커널 쪽은 깃헙이랑 분위기가 많이 다름
  • 모든게 텍스트, 이메일로 업데이트하고, 등등
  • 커널 잘 몰라도;; 거기서 컨트리뷰션 하는 사람들은 그냥 그걸 오래 썼으니까 잘 아는 것 뿐이니 위축되지 말것

08/20

git 개념 및 실습
  • 깃은 익숙하였으나, rebase와 같이 생소한 키워드들도 있었음
uftrace 설치와 간단한 실습
  • 우분투 기본 패키지 저장소(PPA)에 올라와있지 않음
    • 'sudo apt-get install uftrace'가 안된다는 점은 불편
    • '해당 레포지토리 clone -> make -> make install' 과 같이 해야함

09/10

리눅스 커널 컨트리뷰터분 오셔서 강의해주심
  • 리눅스 커널에서 user space 쪽 트레이싱 이야기
  • 리눅스 커널 개발을 위해 익숙해 져야할 것들
  • 컨트리뷰션 하게된 이유
  • 커널 쪽은 진입장벽이 좀 있는 편. 그래도 뉴비들한테는 관대하다고 함.
  • 커널 개발자들이 좋다고 생각하는 이슈는 한 번에 한 가지 이슈, 한 가지 커밋만 하는 것
    • 보통 오타 수정 같은걸로 입문
  • 코딩 컨벤션이야기
    • 리눅스 커널 쪽은 당연히 존재
    • uftrace도 있음. (여쭤보니 얘는 암묵적으로 있다고 하심;; 눈치껏 따라해야 함)
uftrace 실습
  • silverseacher-ag 설치
    • grep보다 빠름
    • 인터페이스도 거의 비슷
  • uftrace가 어떤 툴인지 이 때서야 파악
    • 함수들의 흐름을 따라가는 툴
    • 함수 호출 스택을 한 눈에 볼 수 있다는 점이 좋음
  • 누가 tracing 파일 만들어놓은 것 그대로 받아서 replay하면 동일한 것을 볼 수 있다는 것도 장점
  • 스크립트 기능 (Python)
    • 왜 2.7이지;;
    • 콘솔에서 쓰는 걸 python 스크립트로 그대로 쓸 수가 있음
    • 테스팅 할 때 유용?

09/30

uftrace 기여할 꺼리 찾기
  • 간단한 문서 수정?
    • doc/*.md 수정도 기여가 될 수 있음
  • 함수 중괄호 끝날 즈음에 함수 인자도 같이 표시하기
    • 재귀함수에 유용할 듯
    • 'func(10){} /* func(10)*/' 과 같이 앞, 뒤가 동일하니 가독성의 증가도 기대
  • 메인 README.md test/ 파일들 새 이름으로 업데이트하기
    • 이거는 python 스크립트로 테스트하면 README.md에 명시된 이름으로 컴파일되어서 나옴
    • test/ 디렉토리는 유닛 테스트용 디렉토리인듯

10/08

uftrace 원리 설명
  • 외부 라이브러리의 경우 DLL 후킹해서 트레이싱;;
컨트리뷰션 거리 찾기
  • 함수 중괄호 끝날 즈음에 함수 인자도 같이 표시하기로 Fix

10/21

해커톤 당일날
  • elf와 dwarf의 개념
    • elf는 실행파일, dwarf는 컴파일러 및 함수, 변수에 대한 정보가 담겨져있음
  • 한범님이 도움을 정말 많이 주심
    • (729 line) 함수 이름 얻어오는 부분
      • sym = task_find_sym(sessions, task, rstack);
      • symname = symbol_getname(sym, rstack->addr);
    • (784 line) 인자 값 얻어오는 부분
      • get_argspec_string(task, args, sizeof(args), str_mode);
    • (861 line) 리턴 값 얻어오는 부분
      • get_argspec_string(task, retval, sizeof(args), str_mode);
    • str_mode flag의 조합으로 받아오는 형태를 결정함
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant