debug_get_callstack 함수 설명
debug_get_callstack
함수는 현재 스크립트가 가장 먼저 나열되고, 그 다음에 현재 스크립트가 실행되기 위해 호출된 모든 스크립트가 순서대로 나열된 문자열 배열을 생성합니다. 반환되는 문자열 형식은 선택한 플랫폼에 따라 다를 수 있지만, 일반적으로 스크립트/이벤트 이름, 콜론(:), 그리고 줄 번호로 구성됩니다. 예를 들어:
- "gml_Script_script2:1"
- "gml_Script_script1:32"
- "gml_Script_script0:64"
- "gml_Object_object0_Create_0:1"
이 함수는 선택적으로 인수를 받을 수 있으며, 이는 반환되는 콜 스택의 최대 깊이를 설정합니다. 이 값은 현재 스크립트에서 시작하여 반환된 배열에 포함될 스크립트의 수를 나타냅니다. 이 인수가 지정되지 않으면 전체 콜 스택이 반환됩니다. 반환된 배열은 항상 마지막 위치에 0을 포함합니다.
문법
debug_get_callstack([maxdepth])
인수 설명
인수 | 유형 | 설명 |
---|---|---|
[maxdepth] | Real | OPTIONAL - 반환되는 콜 스택의 최대 깊이 |
반환 값
- 배열
예제 코드
if (debug_mode) {
if (keyboard_check(vk_escape)) {
var _a = debug_get_callstack(4);
for (var i = 0; i < array_length(_a); i++) {
show_debug_message(_a[i]);
}
}
}
위의 코드는 디버그 모드가 활성화되어 있는지 확인하고, 활성화되어 있다면 특정 키가 눌리고 있는지를 체크합니다. 이 경우, 최대 깊이 4로 현재 콜 스택을 콘솔에 출력합니다.
활용 예제
예제 1: 최대 깊이 설정
var callstack = debug_get_callstack(3);
이 코드는 최대 깊이 3으로 콜 스택을 가져옵니다.
예제 2: 콜 스택 출력
var callstack = debug_get_callstack();
for (var i = 0; i < array_length(callstack); i++) {
show_debug_message(callstack[i]);
}
이 코드는 전체 콜 스택을 가져와서 출력합니다.
예제 3: 특정 조건에서 콜 스택 확인
if (some_condition) {
var callstack = debug_get_callstack(5);
// 추가 로직
}
이 코드는 특정 조건이 참일 때 최대 깊이 5로 콜 스택을 가져옵니다.