현재 실행되고 있는 함수이름을 알고 싶은데...
글쓴이: bugger / 작성시간: 금, 2003/12/05 - 10:26오후
안녕하세여..
예를 들어..
------------------------------------------
void sub_test()
{
}
void test()
{
sub_test();
}
int main()
{
test();
}
-------------------------------------
이런 프로그램이 실행되고 있고 실행하고 있는 지점이 sub_test라는 펑션에서 실행되고 있다고 가정하면스택에는 main- test-sub_test 네임이
있을것입니다..
스텍에 있는 main-test-sub_test라는 값을 얻어오는 방법이 없다요?
-.-;;
좋은 하루보네세요
Forums:
OS, 컴파일러를 알려주시면 많은 분들이 답해주시리라 믿습니다.
OS, 컴파일러를 알려주시면 많은 분들이 답해주시리라 믿습니다.
OS는 리눅스, 솔라리스이고 컴파일러는 gcc 또는 g++입니다.
OS는 리눅스, 솔라리스이고 컴파일러는 gcc 또는 g++입니다.
아.. OS나 컴파일러의 차이도 있군여... -.-;;
[code:1]$ cat dumpstack.c#include <
저도 평소에 필요해서 만들어 볼까도 했는데, 문제를 보고 한번 살짝 구현해보았습니다.
Linux 에서만 됩니다. inline asm 있어서...
사용법은 main 들어가자마자 build_symbols() 한번 호출해주고, 원하는 곳에서 dump_stack(); 을 호출하면 됩니다.
외부 프로그램으로 nm을 사용하는 것에 의존하므로, libc의 함수등은 trace되지 않습니다.
참고로 header는 없는데,
void build_symbols();
void dump_stack();
을 만드시고, C++ 이라면, Name mangling을 피하기 위해 앞에 extern "C" 등을넣어 주시면 됩니다.
근데 이게 원하는 답인가요?
---
http://coolengineer.com
원하시는 용도정도라면, target os가 리눅스와 솔라리스이니.. 오히
원하시는 용도정도라면, target os가 리눅스와 솔라리스이니.. 오히려, 간단하게 pstack 명령어로 하는게 낫지 않을까요??
--------------------------
Donghyun Jung
pstack .. 이런 좋은것이 있었군요.. 8) 아.. 시간낭비.
pstack .. 이런 좋은것이 있었군요.. 8)
아.. 시간낭비.. 아까워라..
---
http://coolengineer.com
^^
제가 이전에 작성한 글인데,
아마 이거면 될듯하네요..
이지도움에 글이 있는데 저것은 12월 12일 이후에나 보일껍니다..
http://www.ezdoum.com/stories.php?story=02/10/04/0839023
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
움..pynoos 님... 역시 대단합니다. 존경~~예효
움..
pynoos 님... 역시 대단합니다. 존경~~
예효.. 난 언제나... 될까... -.-;;
간단히 함수 이름을 아는 방법이 있습니다.C99 표준 문서를 보면
간단히 함수 이름을 아는 방법이 있습니다.
C99 표준 문서를 보면요.. 6.4.2.2에.. 미리 정의된 식별자 이야기 가 있는데요...
static const char __func__[] = "함수이름";
#include <stdio.h>
void myfunc(void)
{
printf("%s\n", __func__);
/* ... */
}
위의 결과로..
myfunc
가 출력됩니다.
간단하죠?? ^^;;
그 질문이 아닌거 같은데요..?
그 질문이 아닌거 같은데요..?
오.. 멋지네요. 유용한 팁이군요. :)
오.. 멋지네요.
유용한 팁이군요. :)
평온하다~
[code:1]printf("Function name i
printf("Function name is \"%s\"\n", __FUNCTION__);
* VC6에서 안 먹습니다.
_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz
댓글 달기