์ฑ์คํ ์ด์์ ํฌ๋์๊ฐ ๋์ Reject์ ๋นํ๋ฉด Crash Report๋ฅผ ํจ๊ป ์ค๋ค. ํด๋น ํ์ผ์ ์ด์ด๋ณด๋ฉด ์ด์ํ ์ซ์๋ค๋ง ๊ฐ๋ํ๋ค.
dSYM
debug symbol file
App์ Releaseํ ๋ค์ Crash๋ฅผ ์ง๋จํ ์ ์๊ฒ ๋์์ฃผ๋ ํ์ผ์ด๋ค. Release ๋ค์ Crash๊ฐ ์ด๋์ ๋ฌ๋์ง ์ง๋จํ ์ ์์ผ๋ ค๋ฉด binary๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ source code line์ด ์ด๋์ธ์ง ์ ์ ์์ด์ผ ํ๋ค. ํด๋น ํ์ผ์ ๊ทธ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค.
์ฐ๋ฆฌ๊ฐ ์ฑ์ ๋น๋ํ๋ฉด ์ต์ข ์ ์ผ๋ก binary file์ด ๋์จ๋ค. App Executable, frameworks, app extension ๋ฑ ๋ชจ๋ binary๋ก output์ด ๋์จ๋ค. ์ด๋ ๊ฒ binary๋ก ๋์ค๋ ์น๊ตฌ๋ค์ ๋ชจ๋ dSYM file์ ๊ฐ์ง๊ณ ์๋ค. ์ฆ, binary์ dSYM์ ๊ฐ์ Build UUID๋ก ๋ฌถ์ด์ ๋ค๋๋ ์น๊ตฌ๋ค์ด๋ค.
๋ง์ฝ์ ๊ฐ์ source์์ ๋๊ฐ์ binary๋ฅผ ๋ง๋๋๋ฐ Xcode ๋ฒ์ ์ด ๋ค๋ฅด๊ฑฐ๋, Build setting์ด ๋ค๋ฅธ ๊ฒฝ์ฐ, Build UUID๊ฐ ๋ค๋ฅด๊ฒ ๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด dSYM๋ ๋ฌ๋ผ์ง๊ฒ ๋๋ค. ์ฆ, ๋น๋์ ๋ฐ๋ผ dSYM์ด ๋ฐ๋๊ธฐ ๋๋ฌธ์, ๋ด๊ฐ ๋น๋ํ product์ dSYM์ ์ ๊ด๋ฆฌํ๋ ๊ฒ ์ค์ํ๋ค.
์์ฑ ๋ฐฉ๋ฒ
Xcode โ Project โ Build Settings โ Build Options >โDEBUG_INFORMATION_FORMATโ โ โDWARF with dSYM Fileโ
ํ๋ก์ ํธ๋ฅผ ์ฒ์์ผ๋ก ๋ง๋ค๋ฉด ์์ ๊ฐ์ด ์ด๋ฏธ Release์ ๊ฒฝ์ฐ dSYM file์ ๋ง๋ค๋๋ก ์ค์ ๋์ด ์๋ค.
ํ์ธ ๋ฐฉ๋ฒ
Xcode > Preferences > Location > Archives
Xcode > Window > Organizer
~/Library/Developer/Xcode/Archives
๊ฒฐ๊ตญ Archive ํด๋์ ๊ฐ์, xcarchive
ํ์ผ์ ํจํค์ง ๋ด์ฉ ๋ณด๊ธฐ๋ก ์ด๋ฉด ๋๋ค. ํด๋น ํด๋ ์์ dSYMs
๋ผ๋ ํด๋๊ฐ ์์ ๊ฒ์ด๋ค.
BitCode์ dSYM
๊ธฐ์กด์๋ ์์ ํ ์ปดํ์ผ๋ ์คํํ์ผ๊ณผ dSYM ํ์ผ ๋ชจ๋๋ฅผ AppStore์ ์ฌ๋ ธ๋ค. ๊ทธ๋ ๊ฒ ๋๋ ํ์ผ์ด ๋๊ฐ๋ผ ์๋ฌด๋๋ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ ๋ค. ์ด์ ๊ธ์์ BitCode์ ๋ํด์ ๋ฐฐ์ ๋๋ฐ, ์ด BitCode๋ Intermediate Representation(IR), ์ฆ ์ค๊ฐ์ธ์ด๋ก์ ๋ค์ํ Architecture์ ๋ง๋ ์คํํ์ผ์ ๋ง๋ค๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค๊ณ ๋งํ์๋ค. ์ด ์ต์ ์ ์ผ ๋ค๋ฉด, ๊ทธ๋ผ dSYM ํ์ผ์ ๋ง๋๋ ์ฑ ์์ AppStore์์ ํด์ฃผ๋ฉด ๋์ง ์์๊น?
๊ทธ๊ฒ ๋ง๋ค. ์ค์ ๋ก Organizer์ Archive์ ๋ค์ด๊ฐ๋ณด๋ฉด, dSYMs๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์ ์ ์๋ค. ํ์ง๋ง ์ฃผ์ํ ์ ์ด ์๋๋ฐ, ์ด๋ ๊ฒ Download๋ฅผ ํ๊ฒ ๋๋ฉด ์ต์ข
Product์์ ํ์ํ dSYM์ ๋ฐ๊ฒ ๋๋ค. ์ํ๋ ๋์์ด๋ค. ๊ทธ๋ฐ๋ฐ ์์์ .xcarchive
๋ด๋ถ์์ dSYM์ ํ์ธํ ์ ์๋ค ํ๋๋ฐ, ์ด dSYM๊ณผ AppStore dSYM์ ๋ค๋ฅธ ํ์ผ์ด๋ค.
์ ์๊ฐํด๋ณด๋ฉด ๊ทธ ์ด์ ๋ฅผ ์ ์ ์๋ค. BitCode๋ก ๋ง๋๋ ๊ณผ์ ๋ Compile์ ์ผ์ข ์ด๊ธฐ ๋๋ฌธ์, ์ด์ ๋์๋๋ dSYM์ด ์์ฑ๋๋ค. ๊ทธ๋ฆฌ๊ณ BitCode๋ฅผ binary๋ก ๋ง๋ค ๋๋ ์ปดํ์ผ์ด๋ ์์ฑ๋๋ค. ๊ฐ์ฅ ์์์ binaryํํ๋ก ๋ง๋๋ ๊ณผ์ , ์ฆ ์ปดํ์ผ๊ณผ์ ์์ dSYM์ด Pair๋ก ๊ฐ์ด ์์ฑ๋๋ค๊ณ ํ๊ธฐ ๋๋ฌธ์, bitcode๋ฅผ ๋ง๋ค๋ ๋ฐ์ํ๋ dSYM๊ณผ AppStore์์ binary๋ฅผ ๋ง๋ค๋ ๋ฐ์ํ๋ dSYM์ ๋ค๋ฅธ ํ์ผ์ด๋ค. ์ด์ ์ ๊ธฐ์ตํด ๋์.
Framework์ dSYM
Library, Framework๊ธ์ ์ฝ๊ณ ์๋ค๋ฉด, static library์ dynamic library์ ์ฐจ์ด๋ ์๊ณ ์์ ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
static library์ ๊ฒฝ์ฐ app executable์ ํฌํจ๋๊ธฐ ๋๋ฌธ์ ํด๋น library์ dSYM์ ์์ฑ๋์ง ์๋๋ค. ๋ฐ๋๋ก dynamic library๋ ์์ฑ๋๋ค. dynamic library, ์ฆ framework๋ binary framework๋ก์ ๋์ํ๊ธฐ ๋๋ฌธ์, ํด๋น framework์์ฒด๊ฐ ํ๋์ product์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ dSYM์ด ์์ฑ๋๋ ๊ฒ์ด ๋น์ฐํ๋ค.
Crash Organizer
Crash Organizer๋ ์ถฉ๋ ๊ด๋ จํ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค. ์์ธํ ๊ฑด Reference์ WWDC2021 ์์์ ๋ณด๋๋ก ํ์.
๋ง๋ฌด๋ฆฌ
์ด์ dSYM ๋จ์ด๊ฐ ๋์๋ ํฌ๊ฒ ์ซ์ง ์๊ณ ๋ฌธ์๋ฅผ ์ฝ์ ์ ์์ ๊ฒ ๊ฐ๋ค. ๋!