Visual Studio에서 _asm 키워드때문에 가져온 문제이다.
먼저, 64비트에서는 더이상 MSVC 친구가 _asm 키워드를 지원하지 않는다.
그래서 보통 _asm 코드를 새로 만들어서 Visual studio에서 링크를 새로 걸어 처리하는 방식이다.
그런데
Windows api에 _asm에 적힌 메모리 추적 관련 함수를 제공하고 있었다.
그래서 _asm 어셈블리 코드의 내용과 같은 기능을 코드로 적용하는 방식이 있다.
그와 관련해서 2가지 api가 존재한다.
이중에서 Stackwalk64가 유명한것 같다. 필자는 _AddressOfReturnAddress api로 원래의 _asm 코드와 같은 코드를 만들어서 처리했다.
StackWalker64를 활용한? 스레드 및 call stack을 확인할 수 있는 opensource가 존재한다. 이를 활용해서 call stack 추적 테스트를 보완할 수 있을것이다.
https://github.com/JochenKalmbach/StackWalker
https://docs.microsoft.com/en-us/cpp/intrinsics/addressofreturnaddress?view=msvc-170
https://docs.microsoft.com/ko-kr/windows/win32/api/dbghelp/nf-dbghelp-stackwalk64
'C , C++, C#' 카테고리의 다른 글
[Cmake] 헤더 파일 Include 포함시키기 (0) | 2022.03.08 |
---|---|
[C++] 한글이 있는 파일 읽어 저장하기: Euc-kr (0) | 2022.02.22 |
[C/C++] define으로 플랫폼 체크 (0) | 2022.01.13 |
[Cmake] Googletest setting Windows (0) | 2022.01.05 |
[C/C++] Templete (0) | 2020.08.11 |