KOSSLAB(์ ๋ฆ์ญ) - ์ ๊ธฐ๋ชจ์ ๋ง์ผ๋ฉด ์ผ์ฃผ์ผ์ 1๋ฒ // ์ฒซ๋ชจ์ 8์ 20์ผ(ํ) 7์ ๋ฐ
Mission : ์ค๊ฐ๋จ๊ณ๋ฅผ ๋ฌ์ ์คํ ์ ๋ฐ์ ์ด๋์ ๋ ์์ค๊น์ง ์ด๋์ด๊ฐ ์ ์๋๋ก
Offline & Online ์์ด์ // info / chatroom
** ์๊ฒ๋๋ง ๋ค๋ฅธ ํ๊ฒฝ์์์ trouble shooting
- ํ๋ก์ ํธ ์๊ฐ๋ฌธ์
- ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑ๋ฌธ์
- ์ปค๋ฐ ๋ถ์ ๋ณด๊ณ ์
- ์ปจํธ๋ฆฌ๋ทฐ์ ์งํ์ํฉ
- Issue ๋ฑ๋ก
- Perf contribution
1. Git/Github ํ์
๋ฐฉ์ ํ๋ จ
- Git/Github ์ ๊ธฐ๋ณธ์ค์ต
- ํ์
์ ์ฌ์ฉํ๋ ๋ช
๋ น ๋ฐ ์ด์ ํด๊ฒฐ๋ฒ ์ดํด (rebase ๋ฑ)
- ์คํ์์ค ๊ฐ๋ฐ๋ฐฉ์ ์ดํด
2. uftrace ํ๋ก์ ํธ ์ดํด์ ์ ๋ฆฌ
- ํ๋ก์ ํธ ๋ช
- ๋ถ์ผ ๋ฐ ํ ์ค ์ ์
- ์ฌ์ฉ์ธ์ด
- ์ฃผ์ feature ์ ๋ํ ์๋๋ฆฌ์ค 1 ๊ฐ
- ์ด ๋ผ์ธ ์, ํด๋ ๋๋ ๊ตฌ์กฐ(depth 2-3)
- ์์ค โ ( ์ปดํ์ผ / ์ธํ
) โ ์คํ ๊ณผ์
3. ์ ์ ๋ ํ๋ก์ ํธ ๊ฐ๋ฐํ๊ฒฝ๊ตฌ์ฑ
- ๊ฐ๋ฐ ๋ฐ ํ
์คํธ ํ๊ฒฝ ๊ตฌ์ฑ : IDE ๋ฐ ํธ์ง๊ธฐ์ debugging ํด ์ธํ
- ์ปดํ์ผ / ์คํ ํ
์คํธ : โhello worldโ ๋ฐ ์์ ๋ด์ฉ ํฌํจ ํ
์คํธ
- Git ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ฑ : local, remote repo, upstream ๊ตฌ์กฐ ์ก๊ธฐ
4. Linux ๊ธฐ๋ฐ Tracing ๋๊ตฌ ๊ฐ๋ฐ์ ์ํ ์คํฐ๋
- ELF, PLT/GOT, x86 calling convention ๋ฑ background knowledge
- uftrace ์ฃผ์ ๊ธฐ๋ฅ์ ๋ํ ์์ค๋ฆฌ๋ฉ(๋ถ์)
5. ์๋๋ฆฌ์ค ๊ธฐ๋ฐ ์์ค ๋ถ์
- ํ๋์ ๊ธฐ๋ฅ์ ์ ์ ํด์ ๊ทธ๊ฒ์ด ์คํ๋๋ ๊ณผ์ ์ ๋ถ์
- ๊ทธ์ ๊ด๋ จ๋ class, data structure, function, call-graph ๋ฑ์ ๋ถ์
6. ํ๋ก์ ํธ์ ๊ธฐ์ฌํ๊ธฐ (Contribution)
- ๋ฒ๊ทธ/๋ฆฌํฉํ ๋ง/minor feature PATCH ๊ฑฐ๋ฆฌ ์์ํ๊ธฐ
- ๋ถ์ํ ์๋๋ฆฌ์ค๋ฅผ ๋ฐํ์ผ๋ก ๋ค๊ฐ๋๋ก ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉฐ ๋ถ์์ ์ผ๋ก ์ฌ์ฉํ๋ค.
- ๋ถ์ํ ์๋๋ฆฌ์ค๋ฅผ ๋ฐํ์ผ๋ก ์์ค์ ๋ฆฌํฉํ ๋ง ๊ฐ๋ฅ์ฌ๋ถ๋ฅผ ์ดํด๋ณด๋ฉฐ ๋ถ์ํ๋ค.
- ์ด์ธ์ ๋ค๊ฐ๋ ์๋๋ฆฌ์ค๋ก ์ด์ฉํ๋ฉฐ ๋ถ์กฑํ๊ฑฐ๋ ํ์ํ ๊ธฐ๋ฅ์ ๋ํด์ ๊ณ ๋ฏผํ๊ณ ๊ตฌํํด ๋ณธ๋ค.
- pull-request ์ ์ก
- pull-request ์ ์ ์ฝ๋์ปจ๋ฒค์
ํ์ธ ๋ฐ ํ
์คํธ๋ฅผ ํ์์ ์ผ๋ก ํ๋ค.
- ์์ฑํ ๋ค์ํ ์์ ์ฌํญ(commit)์ ํด๋น ํ๋ก์ ํธ์ pull-request ํ๋ค.
namhyung๋ - ๋ฉ์ธํ ์ด๋
์๋ ์ ์ฐธ๊ฐ์์์ง๋ง 32bit ๋์์ ํ๋๊ฑธ๋ก ์ง๊ธ์ ์ปค๋ฏธํฐ๊ฐ ๋จ
๋ญ ๋นก ํ๊ฒ ๋ค ํ๊ธฐ ๋ณด๋ค๋ ์ฅ๊ธฐ์ ์ผ๋ก ํธ์ํ๊ฒ ์๊ฐํ๋๊ฒ ๋์์ด ๋๋ค
- uftrace : ํธ๋ ์ด์ฑ์ ํด์ฃผ๋ ํด / C, C++, Go, Rust 'Hello World' ํธ๋ ์ด์ฑ ๊ฒฐ๊ณผ ๊ทธ๋ํ ์ถ๋ ฅ - Go์์๋ functioncall์ด 1000๋ฒ์ ์ผ์ด๋์ผํจ..
์์ค์ฝ๋ ๋ผ์ธ์ด ๋ถ์ํ ์ ์์์ ๋๋ก ๋ง๋ค.
cscope, ctag๋ฅผ ๊ณผ๊ฑฐ์ ์ป์ - ๋ต์ด ์๋ค..
Android os์์๋ hello world ์ฐ๋๋ฐ 11๋ง๋ฒ์ functioncall์ด ์ผ์ด๋จ
LLVM, GCC๋ฑ์ ๋ํด์๋ ๋ ์ ์๊ณ ์ถ๋ค๋ ์๊ฐ์ ๊ธฐ์ฌ๋ฅผ ํ๊ณ ์์
uftrace๋ผ๋ ํด์ ์ด์ฉํด์ ๊ฐ์ธ์ ๋ชฉ์ ์ ์ด๋ฃจ๋ ๊ฒ ๋ํ ์ข์ ๊ธฐ์ฌํ๋์ด๋ผ ํ ์ ์๋ค.
2016๋ ์๋ Rust๋ก ์ฐธ์ฌํ์๋ค. PR์ ๋ ๋ ธ๋๋ฐ ํ๋ํ๋ ๊ณ ์ก๊ณผ์ธ๋ฅผ ๋ฐ๋ ๊ฒ ์ฒ๋ผ ์น์ ํ๊ฒ ์ค๋ช ํด์ฃผ์๋ค.
๋น์๋ฆฌ ํ๋์ด์ง๋ง ๊ฐ์น์๋ ์ผ
2. ์กํ์ ๋ฉํ ๋ - [email protected]
๊ฐ์ข ์คํ์์ค(OS, framework, lib)์ ๊ธฐ์ ๋ด์ฉ์ด ์๋ ๊ฐ๋ฐ ๋งค์ปค๋์ฆ(์คํ์์ค ๊ฐ๋ฐ ๋ฐฉ์)
How to develop with Git? - Git์ ํ์คํ ๋ฆฌ ๊ด๋ฆฌ(log : ์ ํ๋๊ฐ?, ๋ญ๊ฐ ๋ฌ๋ผ์ก๋๊ฐ?)
Git์ Collaboration Tool - ํ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ป๊ฒ ์๊ฐํ ๊ฒ์ธ๊ฐ?
rebase, blame ๋ฑ์ ๋ํด์ ํ์ ์ผ๋ก์์ ์ํฉ์์ ๋ฐฐ๊ฒฝ์ ์์์ ์ดํดํด์ผ ํจ.
rebase๋ฅผ ์ฐ๊ณ ์๋๊ฑฐ ์์ฒด๊ฐ ํ์ ์ ์์ฒญ ํ๊ณ ์๋ค๋ ์ฆ๊ฑฐ
rebase : upstream์ ์ซ์๊ฐ๋ ๊ฒ - ์ถฉ๋๋๋ ์์ (fork ๋ ์ clone์ ๋ฐ๊ณ Patch๋ฅผ ํ๋๋ฐ ๊ทธ์ ๋ค๋ฅธ๊ฒ merge๊ฐ ๋์ด์๋ ์ํฉ -> upstream์ base๋ฅผ ๊ต์ฒดํ๋๊ฒ rebase) // ์ํฉ์์์ ๊ฒช์ด๋ด์ผ์ง ๊ทธ๊ฑธ ์ง์ ์ผ๋ก ์ดํดํ ์ ์์
Commit ๋จ์๋ก ๊ฐ๋ฐ์ ์งํ?
gcc์ -pc์ต์ ์ ์ฃผ๋ฉด ๊ฐ๊ฐ์ ํจ์ ์ค๊ฐ์ ncount functioncall ํ๋๊ฒ ์ฒ๋ผ ์ถ๋ ฅํ ์ ์์
uftrace <- functioncall ์ถ์ ๊ฐ๋ฅ, ์ฝ๋์ ํธ์ถ ๋ฑ์ ๋ณผ ์ ์์ // ์๊ณ ๋ฆฌ์ฆ์ ์งฐ์ ๋ ์ ๋๋ก ๋ด ์๋๋๋ก ๋์๊ฐ๊ณ ์๋์ง ํ์ธ ๊ฐ๋ฅ
callback์ด ๋ง์๊ฒฝ์ฐ ํน์ event handler๊ฐ ๋ง์๊ฒฝ์ฐ <- ์์ค์ฝ๋๋ง ์ฝ๋๊ฑฐ๋กค ์ดํด๊ฐ ์๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
kernalfunction <- ์ธ์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ผ๋ฏ๋ก
๊ฒฐ๊ณผ๋ฅผ json์ผ๋ก ๋ฝ์๋ด์ chrome์ผ๋ก ๋ณผ ์ ์์ // chrome://tracing
์ปค๋์ ๊ธฐ์ฌ ํ๊ตญ top, ํด์ธ์์๋ ์์๊ถ
์์ค๊ฐ ์คํ์ด ๋์ด์๋๊ฐ์ ์คํ์์ค๋ ๋ค๋ฅด๋ค. ๋ฆฌ๋ทฐ์ discussion์ด ์๋๊ฐ ์๋๊ฐ๊ฐ ์คํ์์ค๊ฐ ์ด์์๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํ ์ ์๋ ๊ธฐ์ค
์ปค๋์ชฝ ๋ด๊ณต์ ๊ฐ์ง๊ณ uftrace๋ฅผ ํ๋กํ์ ๋ํ๊ฒ ์ด์ํ๊ณ ๊ณ์ฌ
Honggyu Kim <- advancedํ testcase๋ฅผ ์ ๋ฝ์๋ด์๊ณ ํ๋ํ ํ ์คํธ๋ฅผ ์ ํด์ฃผ์ฌ(ex-etherium ๋ฑ), ๋ค๋ฅธ ํด์๋ํด์๋ ์กฐ์๊ธฐ ๊น์ผ์ฌ
๊ฐ์น๋ฅผ ์ํ ์ฝ๋๋ฅผ ๋ง๋๋ ๊ฒ = ์ค์ง์ ์ธ ๋์ฆ์ ๋ฐ๋ผ ๊ตฌํ
๊ธฐ์ฌ ์ข ๋ฅ : 1. pull request / 2. documentation
๋ด๊ฐ๋ง๋ ์ปค๋ฐ์ ์ ์ถํ๋ ๊ฒ(๋จ์ ํ๋ก์ ํธ์ผ ๊ฒฝ์ฐ) - github ์ ์ฅ์์๋ issue์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฒ์๊ธ ํ๋ ์ฌ๋ผ์ค๋๊ฑฐ๋ ๊ฐ์
ex) Support a float time value for trigger
๋ด๊ฐ ๋ง๋ ์ฝ๋์ ๋ํ Description์ ์ ๋ต๋ ๊ต์ฅํ ์ค์ํ๋ค - ์ด๋ฐ๊ฒ์ ๋ํด ๋ง์ด ๋ฐฐ์ธ ์ ์์ ๊ฒ // ์ด๋ป๊ฒ ์ ๋ฌํ๊ณ ์ค๋ํ ๊ฒ์ธ๊ฐ?, ์ํ๋์ง ์ ๋ ๊ฒ
ํ์ง๋ง ๋ฆฌ๋ทฐ์๋ํด์ ์ด๋ป๊ฒ ๋ฐ์๋ค์ด๋์ง๋ ์ค์ - ์ชฝํ๋ ค ํ ๊ฒ์ธ๊ฐ? ์๋๋ฉด ๋ฐฐ์ฐ๋ ์์ธ๋ก ๊ณ์ ํด๋๊ฐ ๊ฒ์ธ๊ฐ? // ๋ฒ์ (๋ฆฌ๋ทฐ์)์ด ์ฌ๋ผ๊ฐ์๋ก ๋ช ์๋กญ๊ฒ ์๊ฐํด์ผ ํจ
๋ฒ๊ทธ์ ๋ฐ๋ผ์ critical ๋ผ๋ฒจ์ด ๋ถ์๊ฑด ๋ ๋นจ๋ฆฌ ์ฒ๋ฆฌํด์ผ ํ๋ค๋๊ฑธ ์๋ฆผ
๋ฌธ์ ์ํฉ์ด ๋ง๋ค์ด์ก๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ญ์ง ์๋ ค์ค์ผ ํจ
FYI <- for your information
๋ฉ์ธํ ์ด๋๊ฐ ๋ง๋ Issue -> Review ๋ผ๋ฒจ์ด ๋ฌ๋ฆผ ๊ทผ๋ฐ ์? ๋ณดํต์ rfc๋ฅผ ๋ฌ์์ ๋ ผํ์ ์์ฒญํ๋ ๊ฒ
sudo apt install libelf-dev
sudo dnf install elfutils-libelf-devel
git clone https://github.com/namhyung/uftrace.git
cd uftrace
make
sudo make install
tutorial - nmap //
** ์ค์ผ์ฅด๋ง์ด ์ธ์ ๋๋์ง๋ ์ ์ ์์
bsp(๋ฆฌ๋ ์ค ๋๋ผ์ด๋ฒ) / ํ์ฌ๋ ์ฐจ๋์ฉ
๋ฆฌ๋ ์ค ์ปค๋์ ๋น์ฅฌ์ผํ์ง ์๊ณ ์ฌ๋ํ๊ณ ๋ชจ๋ ํจ์น๊ฐ ๋ฉ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. ๋ชจ๋ ๊ฒ์ด ํ ์คํธ๋ก ์ด๋ฃจ์ด์ง // ๋ฌผ๋ก ๋ค์ด๋ฐ์ด๋ ๋ฃฐ ๋ฑ์ด ์์
๋๋ฌด ์ซ์ง๋ง๋ผ
- ๋ช ๋ น์ด๋ฅผ ์น๋ฉด ํฌ๋กฌ์ผ๋ก ํธ๋ ์ด์ฑ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๋๋ก ํ๋ ์ต์