Programming
[.Net] ์ง์ฐ(Delay) ํจ์๋ค์ ํน์ง๊ณผ ์ฐจ์ด์ ์ ๋ฆฌ
[.Net] ์ง์ฐ(Delay) ํจ์๋ค์ ํน์ง๊ณผ ์ฐจ์ด์ ์ ๋ฆฌ
2023.01.09์ง์ฐ(Delay) ํจ์ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ๋จ๋ฐ์ฑ์ผ๋ก ์คํํ๋ ์ค๋ ๋ ํจ์๊ฐ ์๊ณ , ํ๋ก๊ทธ๋จ์ด ์์๋ ํ ์ข
๋ฃ๋๊ธฐ ์ง์ ๊น์ง ์คํ๋๋ ์ค๋ ๋ ํจ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์์ ๊ฒฝ์ฐ์๋ ์ค๋ ๋ ํจ์ ๋ด์ ๋ฐ๋ณต๋ฌธ์ ๋ฃ์ด์ ๊ตฌํ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ฐ๋ณต๋ฌธ์ ์ง์ฐ(Delay) ํจ์๋ฅผ ๋ฃ์ง ์์ผ๋ฉด ๊ณผ๋ํ ์ฐ์ฐ์ผ๋ก ์ธํด CPU ๋ถํ๊ฐ ์ฆ๊ฐํ๊ฒ ๋ฉ๋๋ค. CPU ๋ถํ๋ฅผ ๋ฎ์ถ๊ธฐ ์ํด ์ค๋ ๋ ํจ์์ ๋ฐ๋ณต๋ฌธ ์์๋ Sleep() ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
๋๋ค. ์ฌ์ค ๊ผญ ์ค๋ ๋ ํจ์์ ๋ฐ๋ณต๋ฌธ์๋ง ํด๋นํ๋ ๊ฒ์ ์๋๋๋ค. ๊ณผ๋ํ ๋ฐ๋ณต๋ฌธ ๋ด์๋ ์ง์ฐ ํจ์๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด CPU ๋ถํ๊ฐ ๋์์ง๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ฐ๋ฐ ์ง์ฐ์ ์ํ ํจ์๋ก๋ Sleep() ๋ฟ๋ง ์๋๋ผ AutoResetEvent.WaitOne()๋ ์๊ณ Task.D..
[Wireshark] PcapPlusPlus๋ก ์ค์๊ฐ ํจํท ๊ฐ์งํ๊ธฐ(์์ ํฌํจ)
[Wireshark] PcapPlusPlus๋ก ์ค์๊ฐ ํจํท ๊ฐ์งํ๊ธฐ(์์ ํฌํจ)
2023.01.04PcapPlusPlus๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ค๋น ๋จ๊ณ๋ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์. [Wireshark] Visual Studio์์ PcapPlusPlus ์ฌ์ฉ์ ์ํ ์ค๋น ๋จ๊ณ์ ์์ ์ฝ๋ ์คํํ๊ธฐ ์์ ํ๋ก์ ํธ ๋ชฉํ ๋ณธ๋ฌธ์ ์์ ํ๋ก์ ํธ์ ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ํญ๋ชฉ ๋ณ๋ก ์ฐจ๊ทผ์ฐจ๊ทผ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค. ์ค์๊ฐ ๊ฐ์ง๊ฐ ํ์ํ ๋คํธ์ํฌ ์ด๋ํฐ๋ฅผ ์ ํํ๊ธฐ ์ ํ๋ ๋คํธ์ํฌ ์ด๋ํฐ๋ก ๋ค์ด์ค๋ ์ค์๊ฐ ํจํท์ ์ฝ์ ์ฐฝ์ ๋ณด์ฌ์ฃผ๊ธฐ ํด๋น ํจํท์ pcapng ํ์ผ๋ก ์ ์ฅํ๊ธฐ 1. ๋คํธ์ํฌ ์ด๋ํฐ ๋ชฉ๋ก ์ป๊ธฐ ์์ด์ด์คํฌ๋ฅผ ์คํํ๋ฉด ์ ์ผ ๋จผ์ ๋ณด์ด๋ ๊ฒ์ด ์ด๋ํฐ ๋ชฉ๋ก์
๋๋ค. ์ด๋ํฐ๋ฅผ ์ ํํ๊ณ ์ด๊ฒ ๋๋ฉด ์บก์ฒ๊ฐ ์์๋์ง์. PcapPlusPlus๋ก ๋คํธ์ํฌ ๋ชฉ๋ก์ ์ป๋ ๋ฐฉ๋ฒ์ ์์ฃผ ์ฝ์ต๋๋ค. #include #include std..
[Wireshark] Visual Studio์์ PcapPlusPlus ์ฌ์ฉ์ ์ํ ์ค๋น ๋จ๊ณ์ ์์ ์ฝ๋ ์คํํ๊ธฐ
[Wireshark] Visual Studio์์ PcapPlusPlus ์ฌ์ฉ์ ์ํ ์ค๋น ๋จ๊ณ์ ์์ ์ฝ๋ ์คํํ๊ธฐ
2023.01.02ํจํท ์บก์ฒ๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Pcap++์ ์ ๋ฐ์ ์ธ ์๊ฐ๋ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์. [Wireshark] ๋คํธ์ํฌ ํจํท ๋ชจ๋ํฐ๋ง์ PcapPlusPlus๋ก ์ฝ๊ฒ! [Wireshark] ๋คํธ์ํฌ ํจํท ๋ชจ๋ํฐ๋ง์ PcapPlusPlus๋ก ์ฝ๊ฒ! Pcap++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋คํธ์ํฌ ํจํท ๊ฐ์ง๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ Unix์ libpcap, Windows์ Npcap๊ณผ WinPcap์ด ๋ํ์ ์
๋๋ค. PcapPlusPlus(Pcap++)๋ ๋คํธ์ํฌ ํจํท์ ๊ฐ์งํ๊ณ ํ์ฑํ๊ธฐ ์ํ ๋ฉํฐ ํ๋ซํผ C++ ๋ผ luckygg.tistory.com ์ค๋น ๋จ๊ณ Pcap++๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ช ๊ฐ์ง ์ค๋น ๋จ๊ณ๊ฐ ์์ต๋๋ค. ๋ค์ด๋ก๋๊ฐ ํ์ํ ํ์ผ์ ๋งํฌ๋ฅผ ์ถ๊ฐํ์ผ๋ ํด๋น ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์. 1. Visual Studio ๋ฒ์ P..
[Wireshark] ๋คํธ์ํฌ ํจํท ๋ชจ๋ํฐ๋ง์ PcapPlusPlus๋ก ์ฝ๊ฒ!
[Wireshark] ๋คํธ์ํฌ ํจํท ๋ชจ๋ํฐ๋ง์ PcapPlusPlus๋ก ์ฝ๊ฒ!
2022.12.30Pcap++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋คํธ์ํฌ ํจํท ๊ฐ์ง๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก๋ Unix์ libpcap, Windows์ Npcap๊ณผ WinPcap์ด ๋ํ์ ์
๋๋ค. PcapPlusPlus(Pcap++)๋ ๋คํธ์ํฌ ํจํท์ ๊ฐ์งํ๊ณ ํ์ฑํ๊ธฐ ์ํ ๋ฉํฐ ํ๋ซํผ C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ฉฐ, libpcap, Npcap๊ณผ ๊ฐ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ํจํท ์ฒ๋ฆฌ ์์ง์ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ C++ Wrapper๋ก ์ ๊ณตํ๋ ๊ฒ์
๋๋ค. ์ฐธ๊ณ ๋ก, Windows์ WinPcap์ 2013๋
์ ๋ง์ง๋ง์ผ๋ก ๋ ์ด์ ๊ฐ๋ฐ๋์ง ์์ต๋๋ค. ์ดํ๋ก๋ Npcap ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ์ง์๋๋ฉฐ ์ด์ ๋ํ ๋ด์ฉ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ๋๊ฒ ์ต๋๋ค. https://npcap.com/vs-winpcap.html
[C#] ์๋ฃจ์
ํ์๊ธฐ์์ Form์ด ์ฌ๋ผ์ง๋ ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
[C#] ์๋ฃจ์ ํ์๊ธฐ์์ Form์ด ์ฌ๋ผ์ง๋ ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
2022.12.27Form์ด ์ฌ๋ผ์ง๋ ํ์ C# WinForm ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๋ ์ค Form์ด ์ฌ๋ผ์ง๋ ํ์์ด ๋ฐ์ํ์ต๋๋ค. ์ด๋ป๊ฒ ์ฌ๋ผ์ง๋ค๋ ๊ฑด์ง ํ๋ฒ ๋ณด๊ฒ ์ต๋๋ค. ์๋ ๊ทธ๋ฆผ์ ๋ณด๋ฉด, Form1.cs ์ผ์ชฝ์ ์ฌ๊ฐํ ์์ด์ฝ์ด ๋ณด์
๋๋ค. ๊ทธ๋ฐ๋ฐ ์ค๋ฅธ์ชฝ๊ณผ ๊ฐ์ด C# ์์ด์ฝ์ผ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด ์ํ์์ Form1.cs๋ฅผ ๋๋ธ ํด๋ฆญํ๋ฉด ๋์์ธ ํญ์ด ๋ณด์ด์ง ์๊ณ ์์ค ์ฝ๋๋ง ๋ณด์
๋๋ค. ์ฌ์ง์ด ์ด ์ํ์์๋ ์์ค ์ฝ๋ ์ฐฝ์์ '๋์์ด๋ ๋ณด๊ธฐ' ๋ฉ๋ด๋ ์ฌ๋ผ์ง๋๋ค. ์ฐธ ๋ต๋ตํ์ฃ ? ์ฌ์ง์ด ๋น์ฃผ์ผ ์คํ๋์ค๋ฅผ ์ฌ์คํํ๋ , ์ปดํจํฐ๋ฅผ ์ฌ๋ถํ
ํด๋ ํด๊ฒฐ๋์ง ์์ต๋๋ค. ํ์ง๋ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์๊ฐ๋ณด๋ค ๊ฐ๋จํฉ๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ฌธ์ ๊ฐ ์๋ ํ๋ก์ ํธ์ csproj ํ์ผ์ ํ
์คํธ ํธ์ง๊ธฐ(๋ฉ๋ชจ์ฅ)๋ก ์ฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๊ฐ ์๋ ํ์ผ(๋ณธ๋ฌธ์ Form1.cs)..
[Wireshark] ํจํท ๋ถ์์ ์์, ์์ด์ด์คํฌ! ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ ์ ๋ฆฌ
[Wireshark] ํจํท ๋ถ์์ ์์, ์์ด์ด์คํฌ! ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ ์ ๋ฆฌ
2022.12.15์์ด์ด์คํฌ(Wireshark)๋? ์์ด์ด์คํฌ๋ ๋คํธ์ํฌ ํจํท์ ๊ฐ์ ๋ฐ ๋ถ์ํ๋ ํ๋ก๊ทธ๋จ์ผ๋ก, ์ด๋ฆ์ด ๊ฐ์ฅ ๋๋ฆฌ ์๋ ค์ง ์ํํธ์จ์ด์
๋๋ค. ๋คํธ์ํฌ ์ฅ๋น๋ฟ๋ง ์๋๋ผ ๋จธ์ ๋น์ ์นด๋ฉ๋ผ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ์ด๋ ํ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ์์ด์ด์คํฌ๋ก ํจํท์ ๋ถ์ํ๊ณ ๋ฌธ์ ์ ์ ์ฐพ๋๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ํ, TCP ํต์ ์ผ๋ก ์ฅ์น์ ๋ช
๋ น์ด๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉด์ ํจํท์ ๋ฐ์ดํฐ ํํ๋ ์ด๋ ํ์ง ํ์ตํ๋ ๋ฐ์๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค. ์์ด์ด์คํฌ์ ์ฃผ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. GNU GPLv2 ๋ผ์ด์ ์ค(์์ ์ํํธ์จ์ด) ํฌ๋ก์ค ํ๋ซํผ(Windows, Linux, Mac ๋ฑ ์ง์) ํจํท ๋ถ์์ ์ํ GUI ์ ๊ณต ๋ฌด์ฐจ๋ณ ๋ชจ๋(promiscuous mode) ์ง์ Loopback ๋ฟ๋ง ์๋๋ผ ์์คํ
์ ๋คํธ์ํฌ ์ด๋ํฐ๋ ๋ถ์ ๊ฐ๋ฅ ํ์ผ ํํ๋ก ๊ธฐ..
[๋คํธ์ํฌ] iPerf3๋ก ๋คํธ์ํฌ ๋ถํ ํ
์คํธ ์ฝ๊ฒ ํ๊ธฐ
[๋คํธ์ํฌ] iPerf3๋ก ๋คํธ์ํฌ ๋ถํ ํ ์คํธ ์ฝ๊ฒ ํ๊ธฐ
2022.12.11๋คํธ์ํฌ ๋ถํ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๊ณ ๋๋ฉด ์์ ์ฑ ํ
์คํธ๊ฐ ํ์ํฉ๋๋ค. ์ฅ๊ธฐ์ ์ธ ๋์์ ๋ฌธ์ ๊ฐ ์๋์ง, ๋ฎ์ ์ฌ์์ PC์์๋ ์ ๋์ํ๋์ง, CPU ๋ถํ๊ฐ ๋์ ์ํ์์๋ ์ ๋์ํ๋์ง ๋ฑ์ ์์๊ฐ ์์ต๋๋ค. ๋คํธ์ํฌ ๋ถํ๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ๋คํธ์ํฌ ๊ด๋ จ ํ๋ก๊ทธ๋จ์ ๋ง๋ ๋ค๋ฉด ๋คํธ์ํฌ ๋ถํ์ ๋ฐ๋ฅธ ํ
์คํธ๋ ํ์ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ํฉ์์๋ ๋ฌธ์ ๊ฐ ์์ผ๋ ์์๊ฐ์ ๋ง์ ์์ ๋คํธ์ํฌ ํจํท์ด ๋ค์ด์ค๋ฉด ํ๋ก๊ทธ๋จ์ด ๋ฒ๋ฒ
๊ฑฐ๋ฆฌ๋ ์ํฉ์ ๋ณผ ์ ์์ต๋๋ค. iPerf3 ํน์ง ์ฌ๊ธฐ, ๋คํธ์ํฌ ๋ถํ๋ฅผ ํ
์คํธํ๊ธฐ ์ํ ํธ๋ฆฌํ ํ๋ก๊ทธ๋จ์ด ์์ต๋๋ค. ๋ฐ๋ก iPerf3์
๋๋ค. https://iperf.fr/iperf-download.php iPerf - Download iPerf3 and original iPerf pre-compile..
[C#] WinForm ๋๊ตฌ ์์์ ์ปจํธ๋กค์ด ์ถ๊ฐ๋์ง ์๋ ๊ฒฝ์ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ
[C#] WinForm ๋๊ตฌ ์์์ ์ปจํธ๋กค์ด ์ถ๊ฐ๋์ง ์๋ ๊ฒฝ์ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ
2022.10.29๋๊ตฌ ์์์ ์ปจํธ๋กค์ด ์ถ๊ฐ๋์ง ์๋ ๋ฌธ์ C# WinForm์์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋๋ ์ปจํธ๋กค ์ธ์, ๋ด๊ฐ ํ์๋ก ํ๋ ๊ธฐ๋ฅ์ ์ปจํธ๋กค์ด ์๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ์ ์ปจํธ๋กค(Custom control)๋ก ์ง์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ๋๋ NuGet์ด๋ ๋๊ตฐ๊ฐ ๋ง๋ ์ปจํธ๋กค dll์ ์ฌ์ฉํด๋ ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด๋ ๊ฒ ์ธ๋ถ ์ปจํธ๋กค์ ํผ(Form) ๋์์ด๋์์ ์ฌ์ฉํ๋ ค๋ฉด ๋๊ตฌ ์์(Tool box)์ ์ถ๊ฐ๋์ด์ผ ํ๋๋ฐ์. ํํ์ด๋ฉด Visual Studio ๋ฒ๊ทธ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ผ๋, ๋๊ตฌ ์์์ ์ปจํธ๋กค์ ์ถ๊ฐํ๋ค๊ฐ Visual Studio๊ฐ ์ข
๋ฃ๋๋ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ์๋ ์์ต๋๋ค. [Visual Studio] VS2015 ๋๊ตฌ ์์(ToolBox) ์ข
๋ฃ ํ์ ํด๊ฒฐ ๋ฐฉ๋ฒ [Visual Studio] VS2015 ๋๊ตฌ ์์(ToolBox) ์ข
๋ฃ..
[C#] WinForm์ Form ๋์์ด๋๊ฐ ์ฌ๋ผ์ง๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
[C#] WinForm์ Form ๋์์ด๋๊ฐ ์ฌ๋ผ์ง๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ
2022.10.25Form ๋์์ด๋๊ฐ ์ฌ๋ผ์ง๋ ํ์ ์์ฃผ ๊ฐ๋ C# WinForm ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ๋ค๊ฐ Form ๋์์ด๋๊ฐ ์ฌ๋ผ์ง๋ ํ์์ด ์๊น๋๋ค. ์ ์์ ์ด๋ผ๋ฉด ์๋์ ๊ฐ์ด Form.cs ํ์ผ์ ์์ด์ฝ์ด ํผ(Form)์ด์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ธ ํด๋ฆญํ๋ฉด ์ค๋ฅธ์ชฝ๊ณผ ๊ฐ์ด UI ๊พธ๋ฏธ๊ธฐ๊ฐ ๊ฐ๋ฅํ ๋์์ด๋ ์ฐฝ์ด ํ์๋์ด์ผ ํ์ฃ . ๊ทธ๋ฐ๋ฐ ์ด๋ ์๊ฐ๋ถํฐ ํผ ์์ด์ฝ์ด ์ฌ๋ผ์ง๊ณ C# ์์ด์ฝ์ด ์๊ธฐ๋ฉด์ ๋์์ด๋๊ฐ ๋ ์ด์ ๋ณด์ด์ง ์๋ ํ์์ด ์์ต๋๋ค. ์ด์ํ๋ค ์ถ์ด ํ๋ก์ ํธ๋ฅผ ๋ค์ ์ด์ด๋, PC๋ฅผ ์ฌ๋ถํ
ํด๋, ์ด๋ฆ์ ๋ฐ๊ฟ๋ ๋์ ํ ๋์์ค์ง ์์ต๋๋ค. ์ด๋ฐ ํ์์ด ๋ฐ์ํ์ ๋ ์์ฃผ ๊ฐ๋จํ๊ฒ ์กฐ์นํ๋ ๋ฐฉ๋ฒ์ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค. csproj ํ์ผ์ ์์ ํ์ฌ ํด๊ฒฐํ๊ธฐ ์ด ๋ฌธ์ ๋ ํ๋ก์ ํธ ํ์ผ์ ์์ ํ์ฌ ์ฝ๊ฒ ํด๊ฒฐ์ด ๊ฐ๋ฅํฉ๋๋ค. ์๋ ๊ทธ๋ฆผ์ฒ๋ผ, *..
[C++] C++์์ ๊ตฌ์กฐ์ ์์ธ ์ฒ๋ฆฌ(SEH) ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
[C++] C++์์ ๊ตฌ์กฐ์ ์์ธ ์ฒ๋ฆฌ(SEH) ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
2022.10.18๊ตฌ์กฐ์ ์์ธ ์ฒ๋ฆฌ์ C++ ์์ธ ์ฒ๋ฆฌ ๊ตฌ์กฐ์ ์์ธ ์ฒ๋ฆฌ๋ Microsoft Windows์ ๊ธฐ๋ณธ ์์ธ ์ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ์ด๋ฉฐ, ์ํํธ์จ์ด์ ํ๋์จ์ด ์์ธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค๊ณ ์ค๋ช
ํ์์ต๋๋ค. ์ด๋ฌํ ๋ด์ฉ์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์. ๊ตฌ์กฐ์ ์์ธ ์ฒ๋ฆฌ(SEH, Structured Exception Handling) ๊ธฐ์ด ์ด์ผ๊ธฐ ๊ตฌ์กฐ์ ์์ธ ์ฒ๋ฆฌ(SEH, Structured Exception Handling) ๊ธฐ์ด ์ด์ผ๊ธฐ ๊ตฌ์กฐ์ ์์ธ ์ฒ๋ฆฌ(SEH)๋? ๊ตฌ์กฐ์ ์์ธ ์ฒ๋ฆฌ(์ดํ SEH)๋ ํ๋์จ์ด์ ์ํํธ์จ์ด ์์ธ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ๋ Microsoft Windows์ ๊ธฐ๋ณธ ์์ธ ์ฒ๋ฆฌ ๋ฉ์ปค๋์ฆ์
๋๋ค. ํ๋์จ์ด ์์ธ๋ ์์ธ๊ฐ ๋ฐ์ํ ์ฃผ์ฒด๊ฐ CPU luckygg.tistory.com ๊ทธ๋ฆฌ๊ณ C++ ์์ธ ๋ฌธ๋ฒ์ธ try, catch..
ํ๋ก๊ทธ๋จ์์ ์ผ๋ฐ์ ์ธ ์์ธ ์ฒ๋ฆฌ(Exception Handling)ํ๋ ๋ฐฉ๋ฒ
ํ๋ก๊ทธ๋จ์์ ์ผ๋ฐ์ ์ธ ์์ธ ์ฒ๋ฆฌ(Exception Handling)ํ๋ ๋ฐฉ๋ฒ
2022.10.15์์ธ ์ฒ๋ฆฌ๊ฐ ์ ํ์ํ ๊น์? ํ๋ก๊ทธ๋จ์ ์์ธ ์ฒ๋ฆฌ๋ ์์ฃผ ์ค์ํฉ๋๋ค. ๋ด๊ฐ ๋ง๋ ํ๋ก๊ทธ๋จ์ด ๋ชจ๋ ์ํฉ์์ ํญ์ ์ ๋์ํ ๊ฒ์ด๋ผ๋ ๋ณด์ฅ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ . ์๋ฌด๋ฆฌ ์ ๋ง๋ค์๋ค๊ณ ํด๋, ๋ง์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋ ํ๊ฒฝ์ด๋ ์กฐ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋ฌด์จ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ง๋ ์ ์๊ฐ ์์ต๋๋ค. ๊ทธ๋์ ํ๋ก๊ทธ๋๋ฐ ๊ด๋ จ ์์ (๊ธฐ์ด ์ธ์ด ๋ฌธ๋ฒ์ ๋ค๋ฃจ๋ ์ฑ
๋ฟ๋ง ์๋๋ผ, ํ๋ก๊ทธ๋จ ์ค๊ณ, ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ ๋ฑ)์ ๋ณด๋ฉด, ๊ฑฐ์ ๋๋ถ๋ถ ์์ธ ์ฒ๋ฆฌ์ ์ค์์ฑ์ ๊ฐ์กฐํ๊ณ ์์ต๋๋ค. ์์ธ ์ฒ๋ฆฌ๊ฐ ์ ๋์ด ์์ด์ผ ์์ ์ ์ธ ํ๋ก๊ทธ๋จ์ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ด์ฃ . ์ฐธ๊ณ ๋ก, ์ ๊ฐ ์ธ๊ธํ๋ ์์ธ ์ฒ๋ฆฌ๋ ๋์ค์ ์๊ฐํ ์๋ฌ ์ฒ๋ฆฌ(Error Handling)์ ์์ธ ์ฒ๋ฆฌ(Exception Handling) ๋ชจ๋๋ฅผ ํต์นญํ๋ ํํ์
๋๋ค. ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ..
์์ธ ์คํ ํ๊ธฐ(Stack Unwinding)์ ํ๋ก๊ทธ๋จ ์ฑ๋ฅ ์ํฅ
์์ธ ์คํ ํ๊ธฐ(Stack Unwinding)์ ํ๋ก๊ทธ๋จ ์ฑ๋ฅ ์ํฅ
2022.10.12์คํ ํ๊ธฐ(Stack Unwinding)๋? ์์ธ๊ฐ ๋ฐ์ํ ํจ์์์ ์์ธ๊ฐ ์ฒ๋ฆฌ๋์ง ์์ผ๋ฉด, ์์ ํจ์๋ก ๋์๊ฐ ์์ธ๊ฐ ์ฒ๋ฆฌ๋๊ธฐ๋ฅผ ์๋ํฉ๋๋ค. ๋ง์ฝ, ์์ ํจ์์๋ ์๋ค๋ฉด ๋ค์ ๊ทธ ์์ ์์ ํจ์๋ก ๋์๊ฐ๋ฉฐ ๋ฐ๋ณตํ๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ, ์์ธ๊ฐ ๋ฐ์ํ๋๋ฐ ์ด๋ ๊ณณ์์๋ try-catch ๋ฌธ์ด ์๋ค๋ฉด ํ๋ก๊ทธ๋จ์ ์ข
๋ฃ๋๊ณ ๋ง๋๋ค. ์ด๋ ๊ฒ ์ด์ ์ ํธ์ถ๋ ํจ์๋ก ๊ณ์ ๋์๊ฐ๋ ๊ฒ์ ์คํ ํ๊ธฐ(Stack Unwinding)๋ผ๊ณ ํฉ๋๋ค. ๋ค์์ ์์ ์ฝ๋๋ฅผ ๋ณด๊ฒ ์ต๋๋ค. namespace ExamException { class Program { static void func1() { func2(); } static void func2() { func3(); } static void func3() { throw new Ex..