{"id":516281,"date":"2024-10-04T07:44:04","date_gmt":"2024-10-04T06:44:04","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=idea&#038;p=516281"},"modified":"2025-02-05T06:41:32","modified_gmt":"2025-02-05T05:41:32","slug":"hacking-a-jvm-application-with-intellij-idea-s-debugger","status":"publish","type":"idea","link":"https:\/\/blog.jetbrains.com\/ko\/idea\/2024\/10\/hacking-a-jvm-application-with-intellij-idea-s-debugger\/","title":{"rendered":"IntelliJ IDEA \ub514\ubc84\uac70\ub85c JVM \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud574\ud0b9\ud558\uae30"},"content":{"rendered":"<p><em>\uc774 \uac8c\uc2dc\ubb3c\uc740 <a href=\"https:\/\/flounder.dev\/posts\/debugger-god-mode\/\" target=\"_blank\" rel=\"noopener\">Debugger.godMode() \u2013 Hacking JVM Applications With the Debugger<\/a>\ub97c \ubc88\uc5ed\ud55c \uae00\uc785\ub2c8\ub2e4.<\/em><\/p>\n<p>\uc61b\ub0a0\uc758 \ucef4\ud4e8\ud130 \uac8c\uc784\uc740 \uc9c0\uae08\uacfc\ub294 \ub2ec\ub790\uc2b5\ub2c8\ub2e4. \uc774\ud6c4\uc5d0 \uadf8\ub798\ud53d\uacfc \uae30\uacc4\ud559\uc774 \uc9c4\ud654\ud558\uae30\ub3c4 \ud588\uace0, \uc61b\ub0a0\uc5d0\ub294 \uc624\ub298\ub0a0\uc758 \uac8c\uc784\uc5d0\uc11c\ub294 \ub9e4\uc6b0 \ud754\ud558\uc9c0 \uc54a\uc740 \ud2b9\uc131\uc778 \uce58\ud2b8 \ucf54\ub4dc\ub97c \uac00\uc9c0\uace0 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uce58\ud2b8 \ucf54\ub4dc\ub294 \ud2b9\ubcc4\ud55c \ubb34\uc5b8\uac00\ub97c \uc81c\uacf5\ud558\ub294 \ud0a4\uc758 \uc21c\uc11c\ub85c, \uce58\ud2b8 \ucf54\ub4dc\uc758 \uc608\ub85c\ub294 \ubb34\ud55c\uc758 \ud0c4\uc57d \ub610\ub294 \ubcbd\uc744 \uac78\uc5b4\ub2e4\ub2c8\ub294 \ub2a5\ub825 \ub4f1\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uac00\uc7a5 \ubcf4\ud3b8\uc801\uc774\uace0 \uac15\ub825\ud55c \uac83 \uc911 \ud558\ub098\ub294 &#8220;\uac13 \ubaa8\ub4dc&#8221;\ub85c, \uc0ac\uc6a9\uc790\ub97c \ubb34\uc801\uc73c\ub85c \ub9cc\ub4dc\ub294 \uac83\uc774\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<div style=\"justify-content: center; align-items: center; height: 100%;\"><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/iddqd.png\" alt=\"\uac13 \ubaa8\ub4dc\uac00 \ud65c\uc131\ud654 \ub41c Doom\uc758 \ud574\ubcd1\uc758 \uc2a4\ud06c\ub9b0\uc0f7\" \/><\/div>\n<p>\uc704\uc758 \uc774\ubbf8\uc9c0\ub294 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Doom_(1993_video_game)\" target=\"_blank\" rel=\"noopener\">Doom<\/a>\uc5d0\uc11c \uac13 \ubaa8\ub4dc\uc6a9 \ud0a4 \uc870\ud569\uc778 IDDQD\ub97c \uc785\ub825\ud588\uc744 \ub54c\uc758 \uce90\ub9ad\ud130 \ubaa8\uc2b5\uc785\ub2c8\ub2e4. \uc0ac\uc2e4, \uc774 \ud2b9\uc815 \ud0a4 \uc21c\uc11c\ub294 \uac8c\uc784 \uc790\uccb4\ub97c \ub118\uc5b4 <a href=\"https:\/\/www.urbandictionary.com\/define.php?term=iddqd\" target=\"_blank\" rel=\"noopener\">\ubc08<\/a>\uc774 \ub420 \uc815\ub3c4\ub85c \ub9e4\uc6b0 \uc778\uae30\uac00 \uc788\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uac13 \ubaa8\ub4dc\uac00 \uacfc\uac70\uc5d0\ub294 \uac8c\uc784\uc5d0\uc11c \ub110\ub9ac \uc54c\ub824\uc838 \uc788\uc5c8\uc9c0\ub9cc, \uac8c\uc784 \uc18d\uc758 IDDQD \ubc08 \uc2dc\ub300\uac00 \uc9c0\ub098\uac00\ub294 \uac83\uc73c\ub85c \ubcf4\uc778\ub2e4\uba74, \ud604\uc7ac \uc774 \ubc08\uacfc \ub300\uc751\ud558\ub294 \uac83\uc740 \ubb34\uc5c7\uc77c\uc9c0 \uad81\uae08\ud558\uc2e4 \uac83\uc785\ub2c8\ub2e4. \uc800\ub294 \uac1c\uc778\uc801\uc73c\ub85c IDDQD\uc758 \ud604\ub300\uc801\uc778 \ud574\uc11d\uc740 \ub514\ubc84\uac70\ub77c\uace0 \uc0dd\uac01\ud569\ub2c8\ub2e4. \uac8c\uc784\uacfc \uc9c1\uc811\uc801\uc73c\ub85c \uad00\ub828\uc774 \uc788\ub2e4\uae30\ubcf4\ub2e4\ub294, \ucd08\ub2a5\ub825\uc744 \uac16\uace0 \uc788\ub2e4\ub294 \uac83\uc5d0\uc11c \uc720\uc0ac\ud558\ub2e4\uace0 \uc0dd\uac01\ud569\ub2c8\ub2e4.<\/p>\n<h2>\uc2a4\ud398\uc774\uc2a4 \uc778\ubca0\uc774\ub354<\/h2>\n<p>\uc81c \uc0dd\uac01 \uc880 \ub354 \uc124\uba85\ud558\uae30 \uc704\ud574 \uc7ac\ubbf8\uc788\ub294 \uc2dc\ub098\ub9ac\uc624\ub97c \uc0b4\ud3b4 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. Doom\uc5d0 \uc775\uc219\ud558\uc9c0 \uc54a\ub354\ub77c\ub3c4 \uc544\ub9c8 \ub354 \uc624\ub798\ub41c \uac8c\uc784\uc778 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Space_Invaders\" target=\"_blank\" rel=\"noopener\">Space Invaders(\uc2a4\ud398\uc774\uc2a4 \uc778\ubca0\uc774\ub354)<\/a>\ub97c \uc544\uc2dc\ub294 \ubd84\uc774 \ub354 \ub9ce\uc744 \uac83\uc785\ub2c8\ub2e4. Doom\ucc98\ub7fc \uc2a4\ud398\uc774\uc2a4 \uc778\ubca0\uc774\ub354\uc758 \uc904\uac70\ub9ac\ub3c4 \uc6b0\uc8fc\uc5d0\uc11c \uce68\ub7b5\uc790\uc640 \uc2f8\uc6b0\ub294 \uac83\uc744 \uc8fc\uc81c\ub97c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc800\uc758 \uce5c\uad6c\uc774\uc790 \ub3d9\ub8cc\uc778 <a href=\"https:\/\/www.linkedin.com\/in\/eugene-nizienko-016a153a\/\" target=\"_blank\" rel=\"noopener\">Eugene Nizienko<\/a>\uac00 \uc774 \uac8c\uc784\uc744 \uc5d0\ub514\ud130\uc5d0\uc11c \ubc14\ub85c \ud50c\ub808\uc774\ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub294 <a href=\"https:\/\/plugins.jetbrains.com\/plugin\/19383-space-invaders\" target=\"_blank\" rel=\"noopener\">IntelliJ IDEA \ud50c\ub7ec\uadf8\uc778<\/a>\uc744 \uc791\uc131\ud588\uc2b5\ub2c8\ub2e4. \uc0c9\uc778 \uc0dd\uc131\uc774 \uc644\ub8cc\ub418\ub294 \uac83\uc744 \uae30\ub2e4\ub9ac\ub294 \ub3d9\uc548 \uc2dc\uac04\uc744 \ubcf4\ub0b4\uae30\uc5d0 \uc88b\uc744 \uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/space-invaders-dark.png\" alt=\"IntelliJ IDEA \uc5d0\ub514\ud130\uc5d0\uc11c \uc2a4\ud398\uc774\uc2a4 \uc778\ubca0\uc774\ub354 \ud50c\ub808\uc774\ud558\uae30\" width=\"864px\" \/><\/p>\n<p>\uc774 \uac8c\uc784\uc5d0\ub294 \uac13 \ubaa8\ub4dc\uac00 \uc5c6\uc9c0\ub9cc, \ub9cc\uc57d \uc6d0\ud55c\ub2e4\uba74 \uac13 \ubaa8\ub4dc\ub3c4 \ucd94\uac00\ud560 \uc218 \uc788\uc9c0 \uc54a\uc744\uae4c\uc694? \uadf8\ub7fc \uc774\uc81c\ubd80\ud130 \ub514\ubc84\uac70\ub85c \ud504\ub85c\uadf8\ub7a8\uc744 \ud574\ud0b9\ud558\ub294 \ud074\ub798\uc2dd\ud55c \uc804\ud1b5\uc744 \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><b>\uc8fc\uc758<\/b> \ucc45\uc784\uac10\uc788\uac8c \ud589\ub3d9\ud558\uc138\uc694. \uc800\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \uc218\uc815\ud558\uae30 \uc804\uc5d0 \uc6d0 \uc81c\uc791\uc790\uc778 Eugene\uc758 \ub3d9\uc758\ub97c \ubc1b\uc558\uc2b5\ub2c8\ub2e4. \ubcf8\uc778\uc758 \ucf54\ub4dc\uac00 \uc544\ub2cc \ucf54\ub4dc\uc5d0\uc11c \ub514\ubc84\uac70\ub97c \uc0ac\uc6a9\ud560 \uacbd\uc6b0, \uc724\ub9ac\uc801\uc73c\ub85c \ud589\ub3d9\ud574\uc57c \ud569\ub2c8\ub2e4. \uc724\ub9ac\uc801\uc73c\ub85c \ud589\ub3d9\ud560 \uc218 \uc5c6\ub2e4\uba74, \uc544\ubb34\uac83\ub3c4 \ud558\uc9c0 \uc54a\uc544\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<h2>\ub3c4\uad6c \uc900\ube44<\/h2>\n<p>\uba54\ud0c0 \uacbd\ud5d8\uc744 \uc900\ube44 \ud558\uc138\uc694 \u2013 \uc790\uccb4 \ub514\ubc84\uac70\ub97c \uc0ac\uc6a9\ud558\uc5ec IntelliJ IDEA\ub97c \ub514\ubc84\uadf8 \ud560 \uc5d0\uc815\uc785\ub2c8\ub2e4.<\/p>\n<p>\ud558\uc9c0\ub9cc \uc5ec\uae30\uc5d0\ub294 \uc791\uc740 \ubb38\uc81c\uac00 \uc788\uc2b5\ub2c8\ub2e4. IntelliJ IDEA\ub97c \ub514\ubc84\uadf8\ub97c \ud558\ub824\uba74 , \uc911\uc9c0\ud574\uc57c \ud558\ub294\ub370, \uc774\ub85c \uc778\ud574 IDE\ub294 \uc751\ub2f5\ud558\uc9c0 \uc54a\uac8c \ub429\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc774 \uc0c1\ud0dc\ub97c \uc720\uc9c0\ud558\uace0 \ub514\ubc84\uadf8 \ub3c4\uad6c \uc5ed\ud560\uc744 \ud560 \ucd94\uac00 IDE \uc778\uc2a4\ud134\uc2a4\ub97c \ud544\uc694\ub85c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc5ec\ub7ec IDE \uc778\uc2a4\ud134\uc2a4\ub97c \uad00\ub9ac\ud558\uae30 \uc704\ud574, \uc800\ub294 <a href=\"https:\/\/www.jetbrains.com\/ko-kr\/toolbox-app\/\" target=\"_blank\" rel=\"noopener\">JetBrains Toolbox App<\/a>\uc744 \uc0ac\uc6a9\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 JetBrains IDE\ub4e4\uc744 \uccb4\uacc4\uc801\uc73c\ub85c \uc815\ub9ac\ud558\uc5ec \uac19\uc740 IDE\uc758 \uc5ec\ub7ec \ubc84\uc804\uc744 \uc124\uce58\ud558\uac70\ub098 \ub2e4\ub978 VM \uc635\uc158 \ubaa8\uc74c\uc73c\ub85c \uc2e4\ud589\ud560 \uc218 \uc788\ub294 \ub2e8\ucd95\ud0a4\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>IntelliJ IDEA\uc758 \ub450 \uc778\uc2a4\ud134\uc2a4\ub97c \uc124\uce58\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/jb-toolbox-dark.png\" alt=\"Space Invaders\uc640 Debug\ub77c\ub294 IntelliJ IDEA\uc758 \ub450 \uc778\uc2a4\ud134\uc2a4\ub97c \ud3ec\ud568\ud55c \uc5ec\ub7ec JetBrains IDE\ub97c \ubcf4\uc5ec\uc8fc\ub294 JetBrains Toolbox\" width=\"426px\" \/><\/p>\n<p>\ub450 \uc778\uc2a4\ud134\uc2a4 \ubaa8\ub450 \uac19\uc740 IDE \ubc84\uc804\uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0, \ub450 \uc778\uc2a4\ud134\uc2a4\uc758 \uc2dc\uc2a4\ud15c, \uad6c\uc131, \ub85c\uadf8 \ub514\ub809\ud130\ub9ac\ub97c \ub2e4\ub974\uac8c \uc9c0\uc815\ud558\ub294 \uac83\uc774 \uc911\uc694\ud569\ub2c8\ub2e4. \uc774\ub294 <b>Tool actions(\ub3c4\uad6c \uc561\uc158)<\/b> | <b>Settings(\uc124\uc815)<\/b> | <b>Configuration(\uad6c\uc131)<\/b> \uc5d0\uc11c \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4 \uc774 \ud398\uc774\uc9c0\uc5d0\uc11c IDE \uc778\uc2a4\ud134\uc2a4\uc5d0 \uc774\ub984\uc744 \uc9c0\uc815\ud560 \uc218\ub3c4 \uc788\uc73c\uba70, \uc800\ub294 &#8216;Space Invaders&#8217;\uc640 &#8216;Debug&#8217;\ub77c\uace0 \uc774\ub984\uc744 \ubd99\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Space Invaders \uc778\uc2a4\ud134\uc2a4\ub97c \ub514\ubc84\uadf8 \ud560 \uc218 \uc788\ub3c4\ub85d \ud558\ub824\uba74, \uadf8 \uadfc\ucc98\uc5d0 <b>Tool actions(\ub3c4\uad6c \uc561\uc158)<\/b>\ub97c \ud074\ub9ad\ud55c \ub2e4\uc74c <b>Settings(\uc124\uc815)<\/b> | <b>Edit JVM options(JVM \uc635\uc158 \ud3b8\uc9d1)<\/b>\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. \ud30c\uc77c\uc774 \uc5f4\ub9ac\uba74, \ub2e4\uc74c \uc904\uc744 \ubd99\uc5ec\ub123\uc2b5\ub2c8\ub2e4.<\/p>\n<p><code>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005<\/code><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/toolbox-add-vm-options-dark.png\" alt=\"IDE \uc778\uc2a4\ud134\uc2a4\uc5d0 \uc804\ub2ec\ub420 VM \uc635\uc158\uc774 \uc788\ub294 \ud30c\uc77c\" width=\"646px\" \/><\/p>\n<p>\uc774\ub294 \ud0c0\uae43 JVM\uc774 \ub514\ubc84\uadf8 \uc5d0\uc774\uc804\ud2b8\ub85c \uc2e4\ud589\ub418\uac8c \ud558\uace0 \ud3ec\ud2b8 <code>5005<\/code>\uc5d0\uc11c \ub4e4\uc5b4\uc624\ub294 \ub514\ubc84\uac70 \uc5f0\uacb0\uc744 \ub9ac\uc2a4\ub2dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uac8c\uc784 \uc2e4\ud589\ud558\uae30<\/h2>\n<p><b>Space Invaders<\/b>\uc561\uc158\uc744 \uc2e4\ud589\ud558\uc5ec &#8216;Space Invaders&#8217; \uc778\uc2a4\ud134\uc2a4\ub97c \uc2e4\ud589\ud558\uace0, \uac8c\uc784\uc744 \uc124\uce58\ud558\uace0 \uc2e4\ud589\ud569\ub2c8\ub2e4. \uc561\uc158\uc744 \ucc3e\uc73c\ub824\uba74 Shift\ub97c \ub450 \ubc88 \ub204\ub974\uace0 &#8220;Space Invaders&#8221;\ub97c \uc785\ub825\ud558\uc138\uc694.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/space-invaders-action-dark.png\" alt=\"Shift\ub97c \ub450 \ubc88 \ub204\ub974\uba74 \ub098\ud0c0\ub098\ub294 \ub300\ud654\uc0c1\uc790\uc5d0\uc11c Space Invaders \uc561\uc158\uc744 \uc2e4\ud589\ud558\uae30\" width=\"672px\" \/><\/p>\n<p>\uac8c\uc784\uc744 \uc870\uae08 \ud574 \ubcf4\uace0 \uc218\uc815\ud558\uace0 \uc2f6\uc740 \ub3d9\uc791\uc744 \uad00\ucc30\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc6b0\uc8fc\uc120\uc774 \uc801 \ubbf8\uc0ac\uc77c\uc744 \ub9de\uc73c\uba74, \uc67c\ucabd \uc0c1\ub2e8 \ubaa8\uc11c\ub9ac\uc758 \ud5ec\uc2a4 \ubc14\uc5d0\uc11c \uccb4\ub825\uc744 \uc783\uc2b5\ub2c8\ub2e4.<\/p>\n<h2 id=\"attach-and-suspend\">\uc5f0\uacb0 \ubc0f \uc77c\uc2dc \uc911\uc9c0<\/h2>\n<p>\uc0c8\ub85c\uc6b4 Kotlin \ud504\ub85c\uc81d\ud2b8\ub97c \uc124\uc815\ud558\uace0 &#8220;Debug&#8221; IDE \uc778\uc2a4\ud134\uc2a4\ub97c \uc5f4\uc5b4 \ub514\ubc84\uadf8 \uc5ec\uc815\uc744 \uc2dc\uc791\ud558\uaca0\uc2b5\ub2c8\ub2e4. \uc774 \ud504\ub85c\uc81d\ud2b8\ub294 \ud504\ub85c\uc81d\ud2b8 \uc5c6\uc774\ub294 \ub514\ubc84\uac70\ub97c \uc2e4\ud589\ud560 \uc218 \uc5c6\uae30 \ub54c\ubb38\uc5d0 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub610\ud55c, IntelliJ IDEA\ub294 \uc0c8 \ud504\ub85c\uc81d\ud2b8 \ud15c\ud50c\ub9bf\uc5d0 Java\/Kotlin \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ud3ec\ud568\uc2dc\ud0a4\uba70, \uc774\ub97c \ub098\uc911\uc5d0 \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae00 \ud6c4\ubc18 \ubd80\uc5d0 \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \uc0ac\uc6a9\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud55c \ud6c4 \uba54\uc778 \uba54\ub274\ub85c \uc774\ub3d9\ud558\uace0 <b>Run(\uc2e4\ud589<\/b>) | <b>Attach to Process(\ud504\ub85c\uc138\uc2a4\uc5d0 \uc5f0\uacb0)<\/b>\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4. \ub514\ubc84\uac70 \uc5f0\uacb0 \uc694\uccad\uc744 \uae30\ub2e4\ub9ac\ub294 \ub85c\uceec JVM\uc758 \ubaa9\ub85d\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4. \ubaa9\ub85d\uc5d0\uc11c \ub2e4\ub978 \uc2e4\ud589 \uc911\uc778 IDE\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/attach-dark.png\" alt=\"\ub85c\uceec\uc5d0\uc11c \uc2e4\ud589 \uc911\uc778 JVM \ubaa9\ub85d\uc774 \ub098\ud0c0\ub09c \ud31d\uc5c5\" width=\"209px\" \/><\/p>\n<p>\ucf58\uc194\uc5d0 \ub2e4\uc74c \uba54\uc2dc\uc9c0\uac00 \ucf58\uc194\uc5d0 \ud45c\uc2dc\ub418\uc5b4 \ub514\ubc84\uac70\uac00 \ud0c0\uae43 VM\uc5d0 \uc131\uacf5\uc801\uc73c\ub85c \uc5f0\uacb0\ub418\uc5c8\uc74c\uc744 \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p><code>Connected to the target VM, address: 'localhost:5005', transport: 'socket'<\/code><\/p>\n<p>\uc774\uc81c \ud765\ubbf8\ub85c\uc6b4 \ubd80\ubd84\uc774 \uc2dc\uc791\ub429\ub2c8\ub2e4. \uc5b4\ub5bb\uac8c \ud558\uba74 \ud504\ub85c\uadf8\ub7a8\uc744 \uc911\uc9c0\ud560 \uc218 \uc788\uc744\uae4c\uc694?<\/p>\n<p>\uc77c\ubc18\uc801\uc73c\ub85c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ucf54\ub4dc\uc5d0 \uc911\ub2e8\uc810\uc744 \uc124\uc815\ud558\uc9c0\ub9cc, \uc774 \uacbd\uc6b0\uc5d0\ub294, IntelliJ IDEA\uc640 Space Invaders \ud50c\ub7ec\uadf8\uc778 \uc18c\uc2a4\ub97c \uac00\uc9c0\uace0 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ub294 \uc911\ub2e8\uc810\uc744 \uc124\uc815\ud558\uc9c0 \ubabb\ud558\ub3c4\ub85d \ud558\ub294 \uac83 \ubfd0\ub9cc \uc544\ub2c8\ub77c, \ud504\ub85c\uadf8\ub7a8\uc758 \uc791\ub3d9 \ubc29\uc2dd\uc744 \uc774\ud574\ud558\ub294 \uac83\uc744 \ubcf5\uc7a1\ud558\uac8c \ub9cc\ub4ed\ub2c8\ub2e4. \uc5b8\ub73b \ubcf4\uae30\uc5d0\ub294 \uac80\uc0ac\ud558\uac70\ub098 \ub2e8\uacc4\ubcc4\ub85c \uc2e4\ud589\ud560 \uac83\uc774 \uc5c6\ub294 \uac83\ucc98\ub7fc \ubcf4\uc785\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\ud589\ud788\ub3c4, IntelliJ IDEA\uc5d0\ub294 <b>Pause Program(\ud504\ub85c\uadf8\ub7a8 \uc77c\uc2dc \uc911\uc9c0)<\/b>\ub77c\ub294 \uae30\ub2a5\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\uba74 \ucf54\ub4dc\uc758 \ud574\ub2f9 \uc904\uc744 \uc9c0\uc815\ud558\uc9c0 \uc54a\uace0\ub3c4 \ud504\ub85c\uadf8\ub7a8\uc744 \uc784\uc758\uc758 \uc2dc\uc810\uc5d0 \uc815\uc9c0\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc740 \ub514\ubc84\uac70 \ud234\ubc14 \ub610\ub294 \uba54\uc778 \uba54\ub274\uc758 <b>Run(\uc2e4\ud589)<\/b> | <b>Debugging Actions(\ub514\ubc84\uadf8 \uc561\uc158)<\/b> | <b>Pause Program(\ud504\ub85c\uadf8\ub7a8 \uc77c\uc2dc \uc911\uc9c0)<\/b>\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/invaders-paused-dark.png\" alt=\"\uc815\uc9c0\ub41c Space Invaders \uc778\uc2a4\ud134\uc2a4\uc5d0 \ub300\ud55c Debug \ub3c4\uad6c \ucc3d\" width=\"822px\" \/><\/p>\n<p>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc77c\uc2dc \uc911\uc9c0\ub418\uba74 \ub514\ubc84\uadf8\ub97c \uc2dc\uc791\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><b>\ud301<\/b>: <b>Pause Program(\ud504\ub85c\uadf8\ub7a8 \uc77c\uc2dc \uc911\uc9c0)<\/b>\ub294 \uba87 \uac00\uc9c0 \uace0\uae09 \uc2dc\ub098\ub9ac\uc624\uc5d0\uc11c \ud2b9\ud788 \ub3c4\uc6c0\uc774 \ub418\ub294 \ub9e4\uc6b0 \uac15\ub825\ud55c \uae30\uc220\uc785\ub2c8\ub2e4. \uc790\uc138\ud788 \uc54c\uc544\ubcf4\ub824\uba74, \uad00\ub828 \uae00\uc744 \ud655\uc778\ud558\uc138\uc694.<\/p>\n<ul>\n<li><a href=\"https:\/\/flounder.dev\/ko\/posts\/debug-without-breakpoints\/\" target=\"_blank\" rel=\"noopener\">\uc911\ub2e8\uc810 \uc5c6\uc774 \ub514\ubc84\uadf8\ud558\uae30<\/a><\/li>\n<li><a href=\"https:\/\/flounder.dev\/ko\/posts\/debug-unresponsive-apps\/\" target=\"_blank\" rel=\"noopener\">\uc751\ub2f5\ud558\uc9c0 \uc54a\ub294 \uc571 \ub514\ubc84\uadf8\ud558\uae30<\/a><\/li>\n<\/ul>\n<h2>\uad00\ub828 \uac1d\uccb4 \ucc3e\uae30<\/h2>\n<p>\ud504\ub85c\uadf8\ub798\ubc0d \uad00\uc810\uc758 \ubaa9\ud45c\ub294 \uc6b0\uc8fc\uc120\uc758 \uccb4\ub825\uc774 \uc904\uc5b4\ub4e4\uc9c0 \uc54a\uac8c \ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \uc774\uc81c \ud574\ub2f9 \uc0c1\ud0dc\ub97c \uc720\uc9c0\ud558\ub294 \uac1d\uccb4\ub97c \ucc3e\uc544 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud604\uc7ac \ud50c\ub7ec\uadf8\uc778 \ucf54\ub4dc\uc5d0 \ub300\ud574 \uc804\ud600 \ubaa8\ub974\uc9c0\ub9cc, \uadf8\ub798\ub3c4 IntelliJ IDEA \ub514\ubc84\uac70\uc758 <b>Memory(\uba54\ubaa8\ub9ac)<\/b> \ubdf0\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud799\ub97c \uc9c1\uc811 \uac80\uc0ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/open-memory-view-dark.png\" alt=\"Debug \ub3c4\uad6c \ucc3d\uc758 \uc624\ub978\ucabd \uc0c1\ub2e8\uc5d0\uc11c Layout Settings\ub97c \ud074\ub9ad\ud558\uba74 \ub098\ud0c0\ub098\ub294 \uba54\ub274\" width=\"863px\" \/><\/p>\n<p>\uc774 \uae30\ub2a5\uc740 \ud604\uc7ac \uc0b4\uc544\uc788\ub294 \ubaa8\ub4e0 \uac1d\uccb4\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \uc81c\uacf5\ud569\ub2c8\ub2e4. <code>invaders<\/code>\ub97c \uc785\ub825\ud558\uace0 \uc815\ubcf4\ub97c \ucc3e\uc744 \uc218 \uc788\ub294\uc9c0 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/search-in-heap-dark.png\" alt=\"Memory(\uba54\ubaa8\ub9ac) \ubdf0\uc758 \uac80\uc0c9 \ud544\ub4dc\uc5d0 invaders\ub97c \uc785\ub825\ud558\uba74 spaceinvaders \ud328\ud0a4\uc9c0\uc5d0 \uc18d\ud55c \ud074\ub798\uc2a4\uc758 \uac1d\uccb4\uac00 \ubcf4\uc5ec\uc9d1\ub2c8\ub2e4.\" width=\"823px\" \/><\/p>\n<p>\uba85\ubc31\ud558\uac8c plugin \ud074\ub798\uc2a4\ub294 <code>com.github.nizienko.spaceinvaders<\/code> \ud328\ud0a4\uc9c0 \uc548\uc5d0 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \ud328\ud0a4\uc9c0 \uc548\uc5d0\ub294 <code>GameState<\/code>\ub77c\ub294 \ud074\ub798\uc2a4\uac00 \uc788\uace0 \uc774 \ud074\ub798\uc2a4\ub294 \uc5ec\ub7ec \uac1c\uc758 \ub77c\uc774\ube0c \uc778\uc2a4\ud134\uc2a4\uac00 \uc788\uc2b5\ub2c8\ub2e4. \ucc98\uc74c \ubcf4\uba74, \uc774\uac83\uc774 \uc81c\uac00 \ucc3e\uace0 \uc788\ub294 \uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><code>GameState<\/code>\ub97c \ub450 \ubc88 \ud074\ub9ad\ud558\uba74 \uc774 \ud074\ub798\uc2a4\uc758 \ubaa8\ub4e0 \uc778\uc2a4\ud134\uc2a4\uac00 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/instances-of-enum-dark.png\" alt=\"GameState \ub77c\uc774\ube0c \uc778\uc2a4\ud134\uc2a4\ub97c \ubcf4\uc5ec\uc8fc\ub294 \ub300\ud654\uc0c1\uc790\" width=\"615px\" \/><\/p>\n<p>\uacb0\uacfc\ub97c \ubcf4\ub2c8, \uc774\ub294 \uc5f4\uac70\ud615\uc73c\ub85c \uc81c\uac00 \ucc3e\uace0 \uc788\ub358 \uac83\uc774 \uc544\ub2cc \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uac80\uc0c9\uc744 \uacc4\uc18d\ud574 \ubcf4\ub2c8 <code>Game<\/code>\uc758 \ub2e8\uc77c \uc778\uc2a4\ud134\uc2a4\ub97c \ubc1c\uacac\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub178\ub4dc\ub97c \ud655\uc7a5\ud558\uba74 \uc778\uc2a4\ud134\uc2a4\uc758 \ud544\ub4dc\ub97c \uc870\uc0ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/fields-in-memory-view-dark.png\" alt=\"\uac1d\uccb4 \ud544\ub4dc\ub97c \ubcf4\uc5ec\uc8fc\ub294 \uba54\ubaa8\ub9ac \ubcf4\uae30\uc758 \ud655\uc7a5\ub41c \uac1d\uccb4 \ub178\ub4dc\" width=\"615px\" \/><\/p>\n<p>\uc5ec\uae30\uc11c \uad00\uc2ec\uc788\ub294 \uac83\uc740 <code>health<\/code> \uc18d\uc131\uc73c\ub85c, \ud544\ub4dc \uc911 <code>_value<\/code>\ub97c \ucc3e\uc558\uc2b5\ub2c8\ub2e4. \uc81c \uacbd\uc6b0\uc5d0\ub294, \uac12\uc740 <code>100<\/code>\uc73c\ub85c, \uac8c\uc784\uc744 \uc911\uc9c0\ud588\uc744 \ub54c \ud5ec\uc2a4 \ubc14\uac00 \uac00\ub4dd \ucc3c\uc744 \ub54c\uc640 \uc77c\uce58\ud569\ub2c8\ub2e4. \ub530\ub77c\uc11c \uc774\uac83\uc774 \uace0\ub824\ud574\uc57c \ud560 \uc62c\ubc14\ub978 \ud544\ub4dc\uc77c \ud655\ub960\uc774 \ub192\uc73c\uba70, \uadf8 \uac12\uc740 <code>0<\/code>\uc5d0\uc11c <code>100<\/code>\uae4c\uc9c0 \ubc94\uc704\ub97c \uac00\uc9d1\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c \uc774 \uac00\uc124\uc744 \ud14c\uc2a4\ud2b8\ud558\uaca0\uc2b5\ub2c8\ub2e4. <code>_value<\/code>\ub97c \ub9c8\uc6b0\uc2a4 \uc624\ub978\ucabd \ubc84\ud2bc\uc73c\ub85c \ud074\ub9ad\ud55c \ud6c4 <b>Set Value(\uac12 \uc124\uc815)<\/b>\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4. \uc5ec\uae30\uc5d0\uc11c \ud604\uc7ac\uc758 \uac12\uacfc \ub2e4\ub978 \uac12\uc744 \uc120\ud0dd\ud558\uc138\uc694. \uc608\ub97c \ub4e4\uc5b4, \uc800\ub294 <code>50<\/code>\uc744 \uc120\ud0dd\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/memory-view-set-value-dark.png\" alt=\"\uc0ac\uc6a9\uc790\uac00 \uc785\ub825\ud55c \uac12 50\uc744 \ud3ec\ud568\ud558\ub294 'health' \ud544\ub4dc\uc5d0 \ub300\ud55c \ud14d\uc2a4\ud2b8 \ud544\ub4dc\uac00 \uc788\ub294 Memory(\uba54\ubaa8\ub9ac) \ubdf0\" width=\"615px\" \/><\/p>\n<p>\uc774 \ub2e8\uacc4\uc5d0\uc11c <b>Cannot evaluate methods after Pause action(\uc77c\uc2dc \uc815\uc9c0 \uc561\uc158 \uc774\ud6c4 \uba54\uc11c\ub4dc\ub97c \ud3c9\uac00\ud560 \uc218 \uc5c6\uc74c)<\/b>\uc774\ub77c\ub294 \uc5d0\ub7ec\uac00 \ub098\ud0c0\ub0a9\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/cannot-evaluate-after-pause-dark.png\" alt=\"Cannot evaluate methods after Pause action(\uc77c\uc2dc \uc815\uc9c0 \uc561\uc158 \uc774\ud6c4 \uba54\uc11c\ub4dc\ub97c \ud3c9\uac00\ud560 \uc218 \uc5c6\uc74c)\uc774\ub77c\uace0 \ud45c\uc2dc\ub418\ub294 \uc624\ub958 \uba54\uc2dc\uc9c0\" width=\"370px\" \/><\/p>\n<p>\ubb38\uc81c\ub294 \uc81c\uac00 \uc911\ub2e8\uc810 \ub300\uc2e0 <b>Pause Program(\ud504\ub85c\uadf8\ub7a8 \uc77c\uc2dc \uc911\uc9c0)<\/b>\ub97c \uc0ac\uc6a9\ud588\uae30 \ub54c\ubb38\uc5d0 \ubc1c\uc0dd\ud558\uba70, \uc774 \uae30\ub2a5\uc740 <a href=\"https:\/\/flounder.dev\/ko\/posts\/debug-without-breakpoints\/#\ud55c\uacc4\uc810\" target=\"_blank\" rel=\"noopener\">\uc77c\ubd80 \uc81c\ud55c \uc0ac\ud56d<\/a>\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uc774\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud55c \ubc29\ubc95\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uadf8 \ubc29\ubc95\uc740 <b>Pause Program(\ud504\ub85c\uadf8\ub7a8 \uc77c\uc2dc \uc911\uc9c0)<\/b> \uc561\uc158\uc744 <a href=\"https:\/\/flounder.dev\/ko\/posts\/debug-without-breakpoints\/#\ube44\ubc00-\ub2e8\uacc4-\uc218\ud589-\ud2b8\ub9ad\" target=\"_blank\" rel=\"noopener\">\ub2e4\ub8ec \uae00<\/a> \uc5d0\uc11c \ud655\uc778\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae00\uc744 \ubabb \ubcf4\uc2e0 \ubd84\uc744 \uc704\ud574 \uc124\uba85\ud558\uba74, \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc77c\uc2dc \uc911\uc9c0\ud55c \ud6c4, <b>Step Into(\uc2a4\ud15d\uc778\ud22c)<\/b> \ub610\ub294 <b>Step Over(\uc2a4\ud15d\uc624\ubc84)<\/b>\uc640 \uac19\uc740 \ub2e8\uacc4\ubcc4 \uc2e4\ud589 \uc791\uc5c5\uc744 \ud558\uba74 \ub429\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 <b>Set Value(\uac12 \uc124\uc815)<\/b> \ubc0f <b>Evaluate Expression(\ud45c\ud604\uc2dd \ud3c9\uac00)<\/b>\uacfc \uac19\uc740 \uace0\uae09 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c <code>health<\/code>\uc758 \uac12\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uac12\uc744 \uc218\uc815\ud574 \ubcf4\uace0, \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uacc4\uc18d \uc2e4\ud589\ud558\uc5ec \ud5ec\uc2a4 \ubc14\uc5d0 \ubcc0\uacbd \uc0ac\ud56d\uc774 \ud45c\uc2dc\ub418\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc81c \uad00\ub828 \uc0c1\ud0dc\ub97c \ubcf4\uc720\ud558\ub294 \uac1d\uccb4\ub97c \ucc3e\uc544\ub0c8\uc73c\uba70, \ucd5c\uc18c\ud55c \uc218\ub3d9\uc73c\ub85c \ud5ec\uc2a4 \ubc14\ub97c \ub2e4\uc2dc \ucc44\uc6b8 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc544\uc9c1 \uc644\uc804\ud788 \uc548\uc804\ud558\uc9c0\ub294 \uc54a\uc9c0\ub9cc, \uc810\uc810 \ub098\uc544\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\ub808\uc774\ube14 \ubc0f \ud45c\ud604\uc2dd<\/h2>\n<p>\uc774\uc81c \uc9d1\uc911\ud560 \uac1d\uccb4\ub97c \uc2dd\ubcc4\ud588\uc73c\ubbc0\ub85c, \uc774\ub97c <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/examining-suspended-program.html#use-labels\" target=\"_blank\" rel=\"noopener\">\ud45c\uae30<\/a>\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4. \ud45c\uc2dc\ub41c \uac1d\uccb4\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/labeled-object-dark.png\" alt=\"User \uac1d\uccb4\uc758 \ubc30\uc5f4\uc744 \ubcf4\uc5ec\uc8fc\ub294 \ubcc0\uc218 \ud0ed, \uadf8 \uc911 \ud558\ub098\ub294 User_Charlie\ub77c\ub294 \ub514\ubc84\uadf8 \ub808\uc774\ube14\ub85c \ud45c\uc2dc\ub428\" width=\"444px\" \/><\/p>\n<p>\ub808\uc774\ube14\uc740 \uc5ec\ub7ec \ubc29\uba74\uc5d0\uc11c \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae00\uc758 \ub9e5\ub77d\uc5d0\uc11c, \uad00\ub828 \uac1d\uccb4\ub97c \ud45c\uc2dc\ud558\uba74 \ud604\uc7ac \uc2e4\ud589 \ucee8\ud14d\uc2a4\ud2b8\uc5d0 \uc758\uc874\ud558\uc9c0 \uc54a\uace0 <b>Evaluate Expression(\ud45c\ud604\uc2dd \ud3c9\uac00)<\/b>\uacfc \uac19\uc740 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc548\ud0c0\uae5d\uac8c\ub3c4, <code>_value<\/code>\ub97c \uc9c1\uc811 \ud45c\uc2dc\ud558\ub294 \uac83\uc740 \ubd88\uac00\ub2a5\ud558\uc9c0\ub9cc, \uc774\ub97c \ub458\ub7ec\uc2fc \uac1d\uccb4\ub97c \ud45c\uc2dc\ud560 \uc218\ub294 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\ub824\uba74, <code>health<\/code>\ub97c \ub9c8\uc6b0\uc2a4 \uc624\ub978\ucabd \ubc84\ud2bc\uc73c\ub85c \ud074\ub9ad\ud558\uace0, <b>Mark Object(\uac1d\uccb4\uc5d0 \ud45c\uc2dc)<\/b>\ub97c \uc120\ud0dd\ud558\uace0 \uc774\ub984\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/mark-health-object-dark.png\" alt=\"\uc0ac\uc6a9\uc790\uc5d0\uac8c \uac1d\uccb4\uc758 \uc774\ub984\uc744 \uc785\ub825\ud558\ub77c\ub294 Select Object Label \ub300\ud654\uc0c1\uc790\" width=\"615px\" \/><\/p>\n<p>\uc774\uc81c \ub808\uc774\ube14\uc774 \ub2e4\ub978 \uacf3\uc5d0\uc11c \uc5b4\ub5bb\uac8c \uc791\ub3d9\ud558\ub294\uc9c0 \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/examining-suspended-program.html#evaluate-arbitrary-expression\" target=\"_blank\" rel=\"noopener\">Evaluate Expression(\ud45c\ud604\uc2dd \ud3c9\uac00)<\/a> \ub300\ud654 \uc0c1\uc790\ub97c \uc5f4\uace0 \ud45c\ud604\uc2dd\uc5d0 <code>health_object_DebugLabel<\/code>\uc744 \uc785\ub825\ud569\ub2c8\ub2e4. \ubcf4\uc2dc\ub2e4\uc2dc\ud53c, \uac1d\uccb4\ub294 \ud504\ub85c\uadf8\ub7a8\uc758 \uc5b4\ub514\uc11c\ub098 <b>Evaluate(\ud3c9\uac00)<\/b> \ub300\ud654\uc0c1\uc790\ub97c \ud1b5\ud574 \uc811\uadfc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/evaluate-label-dark.png\" alt=\"\ub514\ubc84\uadf8 \ub808\uc774\ube14\uc744 \ud45c\ud604\uc2dd\uc73c\ub85c \uc785\ub825\ud55c Evaluate(\ud3c9\uac00) \ub300\ud654 \uc0c1\uc790\" width=\"474px\" \/><\/p>\n<p>\uc6b0\uc8fc\uc120\uc758 \uccb4\ub825 \uc0c1\ud0dc\ub97c <b>Evaluate(\ud3c9\uac00)<\/b>\uc5d0\uc11c \ubcc0\uacbd\ud558\ub294 \uac83\uc740 \uc5b4\ub5a8\uae4c\uc694? <code>health_object_DebugLabel._value = 100<\/code>\uc740 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub3d9\uc2dc\uc5d0, <code>_value<\/code>\ub294 Kotlin \uc18d\uc131\uc758 \ubc31\ud0b9 \ud544\ub4dc\ub85c \ubcf4\uc785\ub2c8\ub2e4. \uc774\uac83\uc774 \uc0ac\uc2e4\uc774\ub77c\uba74, Kotlin\uc740 \ub300\uc751\ud558\ub294 getter\ub97c \uc0dd\uc131\ud588\uc744 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p><code>health_object_DebugLabel.getValue()<\/code><\/p>\n<p><b>Evaluate(\ud3c9\uac00)<\/b> \ub300\ud654\uc0c1\uc790\ub294 \uc774\uac83\uc774 \uc720\ud6a8\ud55c \ucf54\ub4dc\ub77c\uace0 \uc0dd\uac01\ud558\uc9c0 \uc54a\uc9c0\ub9cc, \uc77c\ub2e8 \uc2dc\ub3c4\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/evaluate-property-dark.png\" alt=\"Evaluate(\ud3c9\uac00) \ub300\ud654 \uc0c1\uc790\uc5d0\uc11c \ub514\ubc84\uadf8 \ub808\uc774\ube14\uc744 \ud1b5\ud574 \uc18d\uc131\uc744 \ucc38\uc870\" width=\"474px\" \/><\/p>\n<p>\ud45c\ud604\uc2dd\uc740 \ud604\uc7ac \uc6b0\uc8fc\uc120\uc758 \uccb4\ub825 \uc0c1\ud0dc\ub97c \ubc18\ud658\ud558\ubbc0\ub85c \uc774 \uc811\uadfc \ubc29\uc2dd\uc740 \uc791\ub3d9\ud569\ub2c8\ub2e4! \uc608\uc0c1\ud558\uc168\uaca0\uc9c0\ub9cc, setter\ub3c4 \uc791\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n<p><code>health_object_DebugLabel.setValue(100)<\/code><\/p>\n<p>setter\ub97c \ud3c9\uac00\ud55c \ud6c4\uc5d0\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub2e4\uc2dc \uc2dc\uc791\ud558\uace0 \ubcc0\uacbd \ub0b4\uc6a9\uc774 \uc801\uc6a9\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud574 \ubcf4\uba74, \uc804\uccb4 \ud5ec\uc2a4 \ubc14\ub97c \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4!<\/p>\n<h2>\ud45c\ud604\uc2dd \ud6c5<\/h2>\n<p>\ubaa9\ud45c\uc5d0 \ub3c4\ub2ec\ud558\uae30 \uc704\ud574 \ub0a8\uc740 \uc720\uc77c\ud55c \ub2e8\uacc4\ub294 \uc0c1\ud0dc \uc218\uc815\uc744 \uc790\ub3d9\ud654\ud558\uc5ec \uccb4\ub825\uc774 \ubc31\uadf8\ub77c\uc6b4\ub4dc\uc5d0\uc11c \ucda9\uc804\ub418\uac8c\ub054 \ud558\ub294 \uac83\uc785\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ubc29\ud574\ubc1b\uc9c0 \uc54a\uace0 \uac8c\uc784 \ud50c\ub808\uc774\ub97c \uc990\uae38 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uc791\uc5c5\uc740 <a href=\"https:\/\/flounder.dev\/ko\/posts\/logpoints-tricks\/#\ub85c\uae45-\ube0c\ub808\uc774\ud06c\ud3ec\uc778\ud2b8\" target=\"_blank\" rel=\"noopener\">\uc77c\uc2dc \uc911\uc9c0\ub418\uc9c0 \uc54a\uc740 \uc911\ub2e8\uc810<\/a>\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc911\ub2e8\uc810 \ud0c0\uc785\uc740 \uc77c\ubc18\uc801\uc73c\ub85c \ub85c\uae45\uc5d0 \uc0ac\uc6a9\ub418\uc9c0\ub9cc, \ub85c\uae45 \ud45c\ud604\uc2dd\uc740 \ubc18\ub4dc\uc2dc \uc21c\uc218\ud560 \ud544\uc694\ub294 \uc5c6\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c, \ub85c\uae45 \ud45c\ud604\uc2dd \ub0b4\uc5d0\uc11c \uc6d0\ud558\ub294 \ubd80\uc218 \ud6a8\uacfc\ub97c \ub3c4\uc785\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uc18c\uc2a4 \ucf54\ub4dc\uac00 \uc5c6\ub2e4\uba74, \uc911\ub2e8\uc810\uc744 \uc124\uc815\ud560 \uacf3\uc774 \uc5b4\ub514\uc778\uc9c0 \uc54c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Java\/Kotlin \ud45c\uc900 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \uc18c\uc2a4\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc744 \uac83\uc774\ub77c\uace0 \ub9d0\ud588\ub358 \uac83\uc744 <a href=\"#attach-and-suspend\">\uae30\uc5b5\ud558\uc2dc\ub098\uc694?<\/a> \uc5ec\uae30\uc11c \uc911\uc694\ud55c \uc810\uc740, IntelliJ IDEA\uc640 \uad00\ub828 \ud50c\ub7ec\uadf8\uc778\uc740 Java\/Kotlin\uc73c\ub85c \uc791\uc131\ub418\uc5c8\uace0, Swing\uc744 UI \ud504\ub808\uc784\uc6cc\ud06c\ub85c \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uac83\uc785\ub2c8\ub2e4. \uacb0\uacfc\uc801\uc73c\ub85c, Space Invaders\ub294 \uc774 \uc885\uc18d\uc131\uc5d0\uc11c \ucf54\ub4dc\ub97c \ud638\ucd9c\ud569\ub2c8\ub2e4. \uc989, \uc18c\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc911\ub2e8\uc810\uc744 \uc124\uc815\ud560 \uc218 \uc788\ub2e4\ub294 \uac83\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4.<\/p>\n<p><b>\uc8fc\uc758<\/b>: \uac04\ub2e8\ud558\uac8c \ud558\uae30 \uc704\ud574, JDK \ubc84\uc804\uc744 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. \ub300\uc2e0 IntelliJ IDEA\uac00 \uc81c\uc548\ud55c \ubc84\uc804\uc73c\ub85c \ud504\ub85c\uc81d\ud2b8\ub97c \ucd08\uae30\ud654\ud588\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098, \ucd5c\uace0\uc758 \uacb0\uacfc\ub97c \uc5bb\uae30 \uc704\ud574, \ud504\ub85c\uadf8\ub7a8\uc744 \uc2e4\ud589\ud558\ub294 \ub370 \uc0ac\uc6a9\ub41c \ubc84\uc804\uc5d0 \uac00\uae4c\uc6b4 \uc18c\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc911\ub2e8\uc810\uc744 \uc124\uc815\ud560 \uc218 \uc788\ub294 \ub9ce\uc740 \uc704\uce58\uac00 \uc788\uc9c0\ub9cc, <code>java.awt.event.KeyListener::keyPressed<\/code>\uc5d0\uc11c \uba54\uc11c\ub4dc \uc911\ub2e8\uc810\uc744 \uc124\uc815\ud558\uae30\ub85c \uacb0\uc815\ud588\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ud0a4\ub97c \ub204\ub97c \ub54c\ub9c8\ub2e4 \ubd80\uc218 \ud6a8\uacfc\ub97c \ud2b8\ub9ac\uac70 \ud569\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/key-pressed-breakpoint-dark.png\" alt=\"java.awt.event.KeyListener::keyPressed\uc5d0 \ub300\ud55c \ub85c\uae45 \uc911\ub2e8\uc810\uc744 \ubcf4\uc5ec\uc8fc\ub294 \uc911\ub2e8\uc810 \ub300\ud654\uc0c1\uc790\" width=\"929px\" \/><\/p>\n<p><b>\uc8fc\uc758<\/b>: \ud56b \ucf54\ub4dc\uc5d0\uc11c \ud45c\ud604\uc2dd\uc774 \uc788\ub294 \uc911\ub2e8\uc810\uc744 \uc124\uc815\ud558\uba74 <a href=\"https:\/\/flounder.dev\/ko\/posts\/troubleshoot-slow-debugging\/#\ud56b-\ucf54\ub4dc\uc758-\uc870\uac74\ubd80-\uc911\ub2e8\uc810\" target=\"_blank\" rel=\"noopener\">\ud0c0\uae43 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc18d\ub3c4\uac00 \ud06c\uac8c \ub290\ub824\uc9c8 \uc218<\/a> \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Space Invaders\ub85c \ub3cc\uc544\uac00\uc11c \uc9c1\uc811 \ub9cc\ub4e0 IDDQD\uac00 \uc791\ub3d9\ud558\ub294\uc9c0 \ud655\uc778\ud574 \ubcf4\uba74, \ub3d9\uc791\ud569\ub2c8\ub2e4!<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/flounder.dev\/img\/debugger-god-mode\/success.gif\" alt=\"IntelliJ IDEA\uc5d0\uc11c Space Invaders\ub97c \ud50c\ub808\uc774\ud558\ub294 \ubaa8\uc2b5 - \uc6b0\uc8fc\uc120\uc774 \ub9de\uc744 \ub54c\ub9c8\ub2e4 \ud5ec\uc2a4 \ubc14\uac00 \uc790\ub3d9\uc73c\ub85c \ucda9\uc804\ub429\ub2c8\ub2e4\" \/><\/p>\n<h2>\uacb0\ub860<\/h2>\n<p>\uc774 \uae00\uc5d0\uc11c\ub294 \ub514\ubc84\uac70\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc5b4\ub5bb\uac8c \uc791\ub3d9\ud558\ub294\uc9c0 \uc54c\uc544\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uba54\ubaa8\ub9ac\ub97c \ud1b5\ud574 \ud0d0\uc0c9\ud558\uace0 \uae30\ub2a5\uc744 \uc218\uc815\ud588\uc2b5\ub2c8\ub2e4. \uc774 \ubaa8\ub4e0 \uc791\uc5c5\uc740 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc18c\uc2a4\uc5d0 \uc190\ub300\uc9c0 \uc54a\uace0\ub3c4 \ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \ub514\ubc84\uac70\ub97c IDDQD\uc5d0 \ube44\uad50\ud55c \uac83\uc774 \ub108\ubb34 \ub300\ub2f4\ud558\uac70\ub098 \ubed4\ubed4\ud55c \uac83\uc73c\ub85c \ubc1b\uc544\ub4e4\uc5ec\uc9c0\uc9c0 \uc54a\uc558\uae30\ub97c \ubc14\ub77c\uba70, \ub514\ubc84\uadf8 \uacfc\uc81c\uc5d0\uc11c \uc5ec\ub7ec\ubd84\uc5d0\uac8c \ub3c4\uc6c0\uc774 \ub420 \uae30\uc220\uc744 \ubc30\uc6b8 \uc218 \uc788\uc73c\uc168\uae30\ub97c \ubc14\ub78d\ub2c8\ub2e4.<\/p>\n<p><a href=\"https:\/\/plugins.jetbrains.com\/plugin\/19383-space-invaders\" target=\"_blank\" rel=\"noopener\">Space Invaders \ud50c\ub7ec\uadf8\uc778<\/a>\uc744 \ub9cc\ub4e0 <a href=\"https:\/\/www.linkedin.com\/in\/eugene-nizienko-016a153a\/\" target=\"_blank\" rel=\"noopener\">Eugene Nizienko<\/a>\uc640, \ub514\ubc84\uadf8\uc640 \ud504\ub85c\uadf8\ub798\ubc0d\uc5d0 \ub300\ud55c \ub04a\uc784\uc5c6\ub294 \uc601\uac10\uc758 \uc6d0\ucc9c\uc774 \ub418\uc5b4 \uc900 <a href=\"https:\/\/twitter.com\/EgorEars\" target=\"_blank\" rel=\"noopener\">Egor Ushakov<\/a>\uc5d0\uac8c \ud070 \uac10\uc0ac\uc758 \ub9d0\uc744 \uc804\ud569\ub2c8\ub2e4. \uc5ec\ub7ec\ubd84\ub4e4 \ub355\uc5d0 \ucef4\ud4e8\ud130\ub85c \ud558\ub294 \ubaa8\ub4e0 \uc791\uc5c5\uc774 \ud6e8\uc52c \uc990\uac81\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc55e\uc73c\ub85c \uc81c\uac00 \ub514\ubc84\uadf8\uc640 \uad00\ub828\ud558\uc5ec \ub2e4\ub8e8\uae38 \uc6d0\ud558\ub294 \uc8fc\uc81c\uac00 \uc788\ub2e4\uba74 \uc54c\ub824\uc8fc\uc138\uc694.<\/p>\n<p>\uc990\uac81\uac8c \ud574\ud0b9\ud558\uc138\uc694!<\/p>\n<p><em>\uac8c\uc2dc\ubb3c \uc6d0\ubb38 \uc791\uc131\uc790<\/em><\/p>\n\n    <div class=\"about-author \">\n        <div class=\"about-author__box\">\n            <div class=\"row\">\n                <div class=\"about-author__box-img\">\n                    <img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2023\/12\/1-200x200.png\" width=\"200\" height=\"200\" alt=\"Igor Kulakov\" loading=\"lazy\"  class=\"avatar avatar-200 wp-user-avatar wp-user-avatar-200 photo avatar-default\">\n                <\/div>\n                <div class=\"about-author__box-text\">\n                                            <h4>Igor Kulakov<\/h4>\n                                                        <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n","protected":false},"author":964,"featured_media":516288,"comment_status":"closed","ping_status":"closed","template":"","categories":[2347],"tags":[632,6801,40],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/idea\/516281"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/idea"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/types\/idea"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/964"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/comments?post=516281"}],"version-history":[{"count":9,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/idea\/516281\/revisions"}],"predecessor-version":[{"id":543628,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/idea\/516281\/revisions\/543628"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/516288"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=516281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=516281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=516281"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=516281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}