Home
>
CS
>
2024
>
๐พ [CS] ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ ๋ฌด์์ผ๊น์?
CS
๐พ [CS] ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ ๋ฌด์์ผ๊น์?
- ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ ํ๋ก๊ทธ๋จ ์คํ ์ค ์์ธ(Exception)๊ฐ ๋ฐ์ํ์ ๋, ์์ธ๊ฐ ๋ฐ์ํ ์ง์ ๊ณผ ๊ทธ ์์ธ๋ก ์ด์ด์ง ํจ์ ํธ์ถ ๊ฒฝ๋ก๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋๋ฒ๊น
์ ๋ณด์
๋๋ค.
- ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ด๋ค ์์ธ๊ฐ ์ด๋์ ๋ฐ์ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ธ๊ฐ ์ด๋ป๊ฒ ๋ฐ์ํ๋์ง๋ฅผ ํ์
ํ ์ ์์ต๋๋ค.
1๏ธโฃ ์คํ ํธ๋ ์ด์ค(Stack Trace)์ ์ญํ .
1๏ธโฃ ๋๋ฒ๊น
.
- ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ฅผ ํตํด ์์ธ๊ฐ ๋ฐ์ํ ์์น๋ฅผ ์ ํํ ์ฐพ์๋ด๊ณ , ๋ฌธ์ ๋ฅผ ์ ์ํ๊ฒ ํด๊ฒฐํ ์ ์์ต๋๋ค.
2๏ธโฃ ๋ฌธ์ ์ ์์ธ ํ์
.
- ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ ์์ธ๊ฐ ๋ฐ์ํ๊ธฐ ์ ๊น์ง ์ด๋ค ํจ์๊ฐ ํธ์ถ๋์๋์ง๋ฅผ ์์๋๋ก ๋ณด์ฌ์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ์ ์์ธ์ ์ถ์ ํ ์ ์๋ ์ค์ํ ๋จ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
4๏ธโฃ ํธ์ถ ๊ฒฝ๋ก ์ดํด.
- ํ๋ก๊ทธ๋จ์์ ํจ์ ํธ์ถ ๊ฒฝ๋ก๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ ์ฃผ์ด, ์ฝ๋์ ํ๋ฆ์ ํ์
ํ๊ณ ์์ ํ ์ ์๊ฒ ํฉ๋๋ค.
2๏ธโฃ ์คํ ํธ๋ ์ด์ค์ ๊ตฌ์กฐ.
- ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ ์ผ๋ฐ์ ์ผ๋ก ์์ธ์ ์ข
๋ฅ์ ๋ฉ์์ง, ๊ทธ๋ฆฌ๊ณ ํจ์ ํธ์ถ ์คํ์ ๋ชฉ๋ก์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ๊ฐ ํญ๋ชฉ์ ๋ค์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
-
- ์์ธ์ ์ข
๋ฅ์ ๋ฉ์์ง
-
- ํธ์ถ๋ ๋ฉ์๋์ ๋ชฉ๋ก.
1๏ธโฃ ์์ธ์ ์ข
๋ฅ์ ๋ฉ์์ง.
- ์์ธ์ ์ ํ๊ณผ ๋ฉ์์ง๋ฅผ ํตํด ์์ธ์ ์์ธ์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
2๏ธโฃ ํธ์ถ๋ ๋ฉ์๋์ ๋ชฉ๋ก.
- ์์ธ๊ฐ ๋ฐ์ํ ์์ ๊น์ง์ ํจ์ ํธ์ถ ๊ฒฝ๋ก๋ฅผ ์์์๋ถํฐ ์๋๋ก ํ์ํฉ๋๋ค.
- ๊ฐ์ฅ ์์ ํญ๋ชฉ์ ์์ธ๊ฐ ์ค์ ๋ก ๋ฐ์ํ ๋ฉ์๋์ด๋ฉฐ, ๊ทธ ์๋๋ ์์ธ๊ฐ ๋ฐ์ํ๊ธฐ๊น์ง ํธ์ถ๋ ๋ฉ์๋๋ค์ด ํ์๋ฉ๋๋ค.
3๏ธโฃ ์คํ ํธ๋ ์ด์ค ์์ (Java)
- ์๋์ ์ฝ๋๋ Java ํ๋ก๊ทธ๋จ์์
NullPointerException
์ด ๋ฐ์ํ์ ๋์ ์คํ ํธ๋ ์ด์ค ์์์
๋๋ค.
public class StackTraceExample {
public static void main(String[] args) {
firstMethod();
}
public static void firstMethod() {
secondMethod();
}
public static void secondMethod() {
String str = null;
str.length(); // ์ฌ๊ธฐ์์ NullPointerException ๋ฐ์
}
}
๐ ์ถ๋ ฅ๋๋ ์คํ ํธ๋ ์ด์ค.
Excption in thread "main" java.lang.NullPointerException
at StackTraceExample.secondMethod(StackTraceExample.java:14)
at StackTraceExample.firstMethod(StackTraceExample.javee:9)
at StackTraceExample.main(StackTraceExample.java:5)
4๏ธโฃ ์คํ ํธ๋ ์ด์ค์ ๊ตฌ์ฑ ์์.
1๏ธโฃ ์์ธ์ ์ข
๋ฅ์ ๋ฉ์์ง.
-
Exception in thread "main" java.lang.NullPointerException
- ํ๋ก๊ทธ๋จ์ ๋ฉ์ธ ์ค๋ ๋์์
NullPointerException
์ด ๋ฐ์ํ๋ค๋ ๊ฒ์ ์๋ ค์ค๋๋ค.
2๏ธโฃ ํธ์ถ๋ ๋ฉ์๋์ ๋ชฉ๋ก.
-
at StackTraceExample.secondMethod(StackTraceExample.java:14)
-
secondMethod
๋ฉ์๋์ 14๋ฒ์งธ ์ค์์ ์์ธ๊ฐ ๋ฐ์ํ์ต๋๋ค.
-
at StackTraceExample.firstMethod(StackTraceExample.java:9)
-
firstMethod
๊ฐ secondMethod
๋ฅผ ํธ์ถํ์ต๋๋ค.
-
at StackTraceExample.main(StackTraceExample.java:5)
-
main
๋ฉ์๋๊ฐ firstMethod
๋ฅผ ํธ์ถํ์ต๋๋ค.
- ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ ๊ฐ์ฅ ์ต๊ทผ์ ํธ์ถ๋ ๋ฉ์๋(์์ธ๊ฐ ๋ฐ์ํ ๋ฉ์๋)๋ถํฐ ์์ํ์ฌ, ์์ธ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ํธ์ถ๋ ๋ฉ์๋๋ค์ ์์ฐจ์ ์ผ๋ก ํ์ํฉ๋๋ค.
5๏ธโฃ ์คํ ํธ๋ ์ด์ค์ ์ค์์ฑ.
1๏ธโฃ ์ค๋ฅ์ ์์ธ ํ์
.
- ์คํ ํธ๋ ์ด์ค๋ฅผ ๋ณด๋ฉด, ์์ธ๊ฐ ๋ฐ์ํ ์ ํํ ์์น์ ์ด๋ค ํจ์์์ ํธ์ถ๋ ๊ฒ์ธ์ง๋ฅผ ์ ์ ์์ต๋๋ค.
- ์ด๋ฅผ ํตํด ์ค๋ฅ์ ์์ธ์ ์ ์ํ๊ฒ ํ์
ํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด, ์์ ์คํ ํธ๋ ์ด์ค(Stack Trace)์์๋
secondMethod
์ str.length()
ํธ์ถ์์ NullPointerException
์ด ๋ฐ์ํ์์ ์ ์ ์์ต๋๋ค.
- ๊ทธ ์ดํ์๋
firstMethod
๊ฐ ์ด ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ , ์ต์ข
์ ์ผ๋ก main
๋ฉ์๋์์ firstMethod
๊ฐ ํธ์ถ๋์์ต๋๋ค.
2๏ธโฃ ๋๋ฒ๊น
์๊ฐ ๋จ์ถ.
- ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ ์์ธ์ ์์ธ์ ์ ํํ๊ฒ ์ง๋ชฉํ๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์์ ํ๊ณ ๋๋ฒ๊น
ํ๋ ์๊ฐ์ ๋จ์ถํ ์ ์์ต๋๋ค.
-
๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ๋ฌธ์ ์ ๊ทผ๋ณธ ์์ธ์ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
3๏ธโฃ ํธ์ถ ๊ฒฝ๋ก ์ดํด.
- ์ฝ๋์ ํ๋ฆ์ ์ดํดํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
- ํนํ, ๋ณต์กํ ํ๋ก๊ทธ๋จ์ด๋ ํ์ฌ์ ์ฝ๋๋ฅผ ๋ค๋ฃฐ ๋ ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง์ ๋ํ ์ค์ํ ๋จ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
6๏ธโฃ ์คํ ํธ๋ ์ด์ค ์ฝ๋ ๋ฐฉ๋ฒ.
1๏ธโฃ ์์ธ ๋ฉ์์ง๋ฅผ ํ์ธ.
- ์์ธ ๋ฉ์์ง๋ ๋ฌธ์ ์ ์ข
๋ฅ์ ์์ธ์ ๋ํด ์ฒซ ๋ฒ์งธ ํํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด,
NullPointException
์ ๋ ๊ฐ์ฒด์ ์ ๊ทผํ๋ ค๊ณ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
2๏ธโฃ ๊ฐ์ฅ ์์ ํธ์ถ ์์น ์ฐพ๊ธฐ.
- ์คํ ํธ๋ ์ด์ค(Stack Trace)์์ ๊ฐ์ฅ ์์ ํธ์ถ ์์น๋ ์์ธ๊ฐ ๋ฐ์ํ ์ ํํ ์์น๋ฅผ ๋ํ๋
๋๋ค.
- ์ด ๋ถ๋ถ๋ถํฐ ๋ฌธ์ ๋ฅผ ์ถ์ ํ๊ธฐ ์์ํด์ผ ํฉ๋๋ค.
3๏ธโฃ ํธ์ถ ์์๋๋ก ํ์ธ.
- ์์ธ๊ฐ ๋ฐ์ํ ์ฝ๋์ ํ๋ฆ์ ์ดํดํ๋ ค๋ฉด ํธ์ถ ์์๋๋ก ๊ฐ ๋ฉ์๋๊ฐ ์ด๋ค ์ญํ ์ ํ๋์ง ๋ถ์ํฉ๋๋ค.
- ์ด ๊ณผ์ ์ ํตํด ๋ฌธ์ ๊ฐ ์๋ ๋ถ๋ถ์ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
7๏ธโฃ ์คํ
ํธ๋ ์ด์ค๋ฅผ ์ ์ฉํ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ.
1๏ธโฃ ๋ก๊น
(logging)๊ณผ ํจ๊ผ ์ฌ์ฉ.
- ์ค์ ๋ก ๋ฐฐํฌ๋ ์ํํธ์จ์ด์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ก๊ทธ์ ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ฅผ ๊ธฐ๋กํ๋๋ก ์ค์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ์ด๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํ์ ๋, ๊ฐ๋ฐ์๊ฐ ์ฝ๊ฒ ๋ฌธ์ ์ ์์ธ์ ํ์
ํ ์ ์์ต๋๋ค.
- Java์์๋ ์์ธ๋ฅผ ์ก์ ๋
e.printStackTrace()
๋ฅผ ์ฌ์ฉํ์ฌ ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ฅผ ์ถ๋ ฅํ๊ฑฐ๋, ๋ก๊น
ํ๋ ์์ํฌ(logging framework)๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋กํ ์ ์์ต๋๋ค.
2๏ธโฃ ์์ธ ์ฒ๋ฆฌ์์ ์คํ ํธ๋ ์ด์ค ํ์ฉ.
- ์์ธ๋ฅผ ์ก์์ ์ฒ๋ฆฌํ ๋, ์คํ ํธ๋ ์ด์ค๋ฅผ ์ถ๋ ฅํจ์ผ๋ก์จ ๋๋ฒ๊น
์ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ํนํ, ์์ํ์ง ๋ชปํ ์์ธ๋ฅผ ๋๋ฒ๊น
ํ ๋ ์ ์ฉํฉ๋๋ค.
8๏ธโฃ ์์ฝ.
-
์คํ ํธ๋ ์ด์ค(Stack Trace)๋ ํ๋ก๊ทธ๋จ์์ ์์ธ๊ฐ ๋ฐ์ํ์ ๋ ์์ธ์ ์์ธ๊ณผ ํธ์ถ ๊ฒฝ๋ก๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋๋ฒ๊น
์ ๋ณด์
๋๋ค.
- ์์ธ์ ์ข
๋ฅ์ ๋ฉ์์ง, ๊ทธ๋ฆฌ๊ณ ํจ์ ํธ์ถ ์คํ ๋ชฉ๋ก์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๋ฌธ์ ๋ฅผ ์ถ์ ํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ํฐ ๋์์ด ๋ฉ๋๋ค.
- ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ฝ๋์ ํ๋ฆ์ ์ดํดํ๊ณ , ์์ธ๊ฐ ๋ฐ์ํ ์ ํํ ์์น์ ์์ธ์ ํ์
ํ์ฌ ๋๋ฒ๊น
์๊ฐ์ ๋จ์ถํ ์ ์์ต๋๋ค.
- ์คํ ํธ๋ ์ด์ค(Stack Trace)๋ ํนํ ๋ก๊น
(logging)๊ณผ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ๋ฉด, ๋ฐฐํฌ๋ ์ํํธ์จ์ด์ ๋ฌธ์ ๋ฅผ ์ง๋จํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.