Issue #569Background: s-forkexec 빌드 스크립트의 t-abc 바이너리에 대한 의존성 빌드가 빠져 있음.
Solution: Testbase.build() override 해서 빌드 추가.
-> Pull Request #570
GCC8의 String truncation 경고 처리
Issue #571Background: 최신 GCC8 컴파일러에서 string truncation에 대한 경고 메세지 발생.
Solution: strncpy 대신 memcpy로 처리, wstringop_truncation supress 코드 제거.
-> Pull Request #572
Discussion & Suggestion
make -j 8 로 컴파일 할 시에 check-deps 의 CCFLAGS 빠짐.
Issue #564Background: make -j 1 일 경우엔 상관이 없지만, 여러 task worker로 빌드를 할 시에 알 수 없는 이유로 CCFLAGS 가 빠진 채로 빌드가 됨.
(check-deps/Makefile.check 부분이 include 되지 않은 상태로 빌드)
test sample 바이너리
Issue #530Background: 트레이싱을 통한 sample 바이너리를 test target 을 통해 빌드할 수 있는데,
이 test 과정이 너무 오래 걸림.
Solution: sample target 생성하는 방향으로 처리하기로 결정
perf event tracing이 동작하지 않음.
Issue #513Background: cat /proc/sys/kernel/perf_event_paranoid 값이 2 미만일때 Event Tracing 안됨.
사용자에게 Warning 메시지를 통해 값 변경에 대해 안내해주면 좋을것 같음.
Solution: 유저의 권한이 값을 설정할 수 없을 수 있음. (+ Verbose 모드를 통해 알 수 있는 정보임)
.PLT.GOT 섹션이 없는 바이너리의 경우 트레이싱 에러?
Issue #529Background: -fno-plt 컴파일 된 바이너리의 경우 .PLT.GOT 섹션이 없고, 트레이싱 불가.
트레이싱이 불가할 때 아무 메시지 없이 uftrace.data unavailable 에러 메시지만 띄우면,
사용자에 입장에서 컴파일을 잘못한건지, uftrace가 지원하지 않는 기능인지 알 수 없음.
따라서 이런 경우 Warning 혹은 Error 메시지를 통해 .PLT.GOT 가 없어서 발생하는 문제고,
아직 지원하지 않음에 대해 안내하는것이 좋을 것 같음.
Solution: -no-plt에 대해 트레이싱은 앞으로 추가될 기능이기 때문에 없어도 될 것 같음.
-pie Position Independent Execution 파일 지원?
Issue #524Background: -pie 컴파일된 바이너리 트레이싱 지원 여부?
-> 이미 지원중.
Closed Issues & PR
TESTARG 테스트 번호
Issue #552Background: 테스트 진행시 TESTARG를 통해 테스트 번호를 넘길때 0 pad 된 숫자를 넘겨야 됨.
ex) export TESTARG='12'; make test; -> 012, 112, 120, 121.122... # 12가 들어간 모든 케이스를 실행
Solution: TESTARG 의 테스트 번호 파싱 후 해당 테스트 번호만 가져오도록 함. (012 만 가져오도록)
-> Pull Request #553 : 0 pad 한 test number을 넘기도록 의도한 거라 closed.
elfutils 버전
Pull Request #538Background: misc/install-elfutils.sh 의 elfutils 버전이 하드코딩 되어 있음.
Solution: git ls-remote 를 통해 remote의 tag를 불러와 최신 태그를 통해 버전정보를 불러오게 함.
-> 버전 정보 하드코딩은 의도한 거라 closed.
Question (Gitter Chat)
uftace
가ENODATA
에러를 출력하는 조건? https://gitter.im/uftrace/uftrace?at=5b9a7df4f4bd1056ac5989feuftrace --force
command?) https://gitter.im/uftrace/uftrace?at=5ba7e4c15df519473401b365Issue & Pull Request
Issue #511 Background:
misc/debug.sh
스크립트를 이용한 디버깅이 용이하지 않음.uftrace
를 통해 트레이싱할 바이너리가misc/debug-mcount.cmd
에 하드코딩되어 있음. 원하는 바이너리를 테스트해보려면 파일을 직접 수정해야됨.Solution:
misc/debug.sh
에 바이너리 이름과 Args. 넘겨서 수정 없이 디버깅 가능하게 함. -> Pull Request #510Issue #531 Background:
misc/install-deps.sh
스크립트에-y
인자를 넘겨줄 방법이 없음. 테스트 목적을 위해 도커 이미지를 만들고 싶었으나 이 기능이 없어서 만들 수 없었음.Solution:
misc/install-deps.sh
스크립트에-y
인자를 넘겨줄 수 있게 함 -> Pull Request #532 Uftrace Docker Image Travis :Issue #569 Background:
test
target 빌드가 전부 순차적으로 진행되기 때문에 너무 오래 걸림.Solution: Python
multiprocessing.pool
을 이용해 병렬 프로세싱 진행. -> Pull Request #570 -> Build Time Compare: https://github.com/namhyung/uftrace/issues/569#issuecomment-431687922 -> Parallel build demo: https://github.com/namhyung/uftrace/issues/569#issuecomment-431687956s-forkexec
빌드 의존성Issue #569 Background:
s-forkexec
빌드 스크립트의t-abc
바이너리에 대한 의존성 빌드가 빠져 있음.Solution:
Testbase.build()
override 해서 빌드 추가. -> Pull Request #570Issue #571 Background: 최신 GCC8 컴파일러에서 string truncation에 대한 경고 메세지 발생.
Solution:
strncpy
대신memcpy
로 처리,wstringop_truncation
supress 코드 제거. -> Pull Request #572Discussion & Suggestion
make -j 8
로 컴파일 할 시에check-deps
의CCFLAGS
빠짐.Issue #564 Background:
make -j 1
일 경우엔 상관이 없지만, 여러 task worker로 빌드를 할 시에 알 수 없는 이유로CCFLAGS
가 빠진 채로 빌드가 됨. (check-deps/Makefile.check
부분이 include 되지 않은 상태로 빌드)test
sample 바이너리Issue #530 Background: 트레이싱을 통한 sample 바이너리를
test
target 을 통해 빌드할 수 있는데, 이test
과정이 너무 오래 걸림.Solution:
sample
target 생성하는 방향으로 처리하기로 결정perf
event tracing이 동작하지 않음.Issue #513 Background:
cat /proc/sys/kernel/perf_event_paranoid
값이 2 미만일때 Event Tracing 안됨. 사용자에게 Warning 메시지를 통해 값 변경에 대해 안내해주면 좋을것 같음.Solution: 유저의 권한이 값을 설정할 수 없을 수 있음. (+
Verbose
모드를 통해 알 수 있는 정보임).PLT.GOT
섹션이 없는 바이너리의 경우 트레이싱 에러?Issue #529 Background:
-fno-plt
컴파일 된 바이너리의 경우.PLT.GOT
섹션이 없고, 트레이싱 불가. 트레이싱이 불가할 때 아무 메시지 없이uftrace.data
unavailable 에러 메시지만 띄우면, 사용자에 입장에서 컴파일을 잘못한건지, uftrace가 지원하지 않는 기능인지 알 수 없음.따라서 이런 경우 Warning 혹은 Error 메시지를 통해
.PLT.GOT
가 없어서 발생하는 문제고, 아직 지원하지 않음에 대해 안내하는것이 좋을 것 같음.Solution:
-no-plt
에 대해 트레이싱은 앞으로 추가될 기능이기 때문에 없어도 될 것 같음.-pie
Position Independent Execution 파일 지원?Issue #524 Background:
-pie
컴파일된 바이너리 트레이싱 지원 여부? -> 이미 지원중.Closed Issues & PR
TESTARG
테스트 번호Issue #552 Background: 테스트 진행시
TESTARG
를 통해 테스트 번호를 넘길때 0 pad 된 숫자를 넘겨야 됨. ex) export TESTARG='12'; make test; -> 012, 112, 120, 121.122... # 12가 들어간 모든 케이스를 실행Solution:
TESTARG
의 테스트 번호 파싱 후 해당 테스트 번호만 가져오도록 함. (012 만 가져오도록) -> Pull Request #553 : 0 pad 한 test number을 넘기도록 의도한 거라 closed.elfutils
버전Pull Request #538 Background:
misc/install-elfutils.sh
의elfutils
버전이 하드코딩 되어 있음.Solution:
git ls-remote
를 통해 remote의 tag를 불러와 최신 태그를 통해 버전정보를 불러오게 함. -> 버전 정보 하드코딩은 의도한 거라 closed.