๋ฐ์ํ
Language/Go
[Go] ์คํ์ค์ธ ํ๋ก์ธ์ค์ ๋ํด memory dump ํ์ผ์ ๋จ๊ธฐ๊ณ GoLand๋ก ๋ถ์ํ๊ธฐ
[Go] ์คํ์ค์ธ ํ๋ก์ธ์ค์ ๋ํด memory dump ํ์ผ์ ๋จ๊ธฐ๊ณ GoLand๋ก ๋ถ์ํ๊ธฐ
2019.11.05Memory Dump ํ์ผ ๋จ๊ธฐ๊ธฐ - Linux ํ๊ฒฝ(Virtual Machine - CentOS7 ๊ธฐ์ค) 1. gdb ์ค์น(๋์ด์๋ค๋ฉด ์๋ต) yum install gdb 2. ๋์์ด ๋๋ ํ๋ก์ธ์ค ์ถ์ $ ps -ef | grep socket root 7896 18386 0 Nov04 ? 00:01:47 /game/server/socketServer/20191104_175539/dev_socket/dev_socket -ServerType=Dev root 29534 29485 0 16:34 pts/1 00:00:00 grep --color=auto socket 3. memory dump ๋จ๊ธฐ๊ธฐ $ gcore 7896 warning: File "/usr/lib/golang/src/runtime/runtim..
Go์์ ์์ฃผ ์ฌ์ฉํ๋ reflect ๊ตฌ๋ฌธ (Golang reflect)
Go์์ ์์ฃผ ์ฌ์ฉํ๋ reflect ๊ตฌ๋ฌธ (Golang reflect)
2019.06.21๊ตฌ์กฐ์ฒด ๋ฐ ์ธํฐํ์ด์ค ์ ์ type Animal interface{ Move(int) bool } type Cat struct { Name string `custom:"name"` Age int `custom:"age"` Child []string `custom:"child"` } func (c *Cat) Move(distance int) bool { fmt.Println("Cat Move ", distance) return true } type Dog struct{ Name string `custom:"name"` Age int `custom:"age"` Child []string `custom:"child"` } func (d *Dog) Move(distance int) bool { fmt.Print..
Go์์ ์ค์ํ๊ธฐ ์ฌ์ด ์ผ์ด์ค - defer, panic, recover
Go์์ ์ค์ํ๊ธฐ ์ฌ์ด ์ผ์ด์ค - defer, panic, recover
2019.04.242์ค ์์ฝ recover ๋ deferํจ์์ ์ํด ์ง์ ์ ์ผ๋ก ํธ์ถ๋๋ฉด ์๋๋ค. panic์ ์ค๋จ์ํฌ ํจ์์ depth๊ฐ n์ด๋ผ๋ฉด recover๋ n+1 ์์ ํธ์ถ๋์ด์ผ ํ๋ค. ์ฐฉ๊ฐํ๊ธฐ ์ฌ์ด ์ผ์ด์ค ๋ค๋ฅธ ์ธ์ด์ try-catch๋ฌธ๊ณผ ๋น์ทํ๊ฒ go์์๋ defer, panic, recover ํจํด์ ์ด์ฉํด์ ๋ฐ์ํ๋ ์์ธ ์ํฉ์ ์ ์ด ํ ์ ์๋ค. package main import ( "fmt" ) func main() { defer a() panic("panic!") } func a() { r := recover() fmt.Println("recoverd: ", r) fmt.Println("a called") } recoverd: panic! a called Program exited. ๋ง์ฝ ์ง์ฐ ํธ์ถ ..