Dra*_*ith 5 c++ debugging transpiler
我想将自定义预处理器语言与 C++ 一起使用。我的源代码将首先使用自定义转译器转译为有效的 C++,然后使用常规 C++ 编译器进行编译。例子:
my_transpiler -o source_gen.cpp source.mycpp
g++ -o myapp source_gen.cpp
Run Code Online (Sandbox Code Playgroud)
在这种情况下,生成的调试信息与source_gen.cpp文件相关联。这样我就可以调试并进入source_gen.cpp。但是如果我想进入原始源文件source.mycpp该怎么办?
gdb或Visual Studio等调试器,或者clang、gcc或msvc等编译器是否提供将调试信息映射到原始源文件的机制?
正如对该问题的评论所暗示的那样,解决此问题的常用方法是指令#line。尤其,
# line digit-sequence " s-char-sequenceopt " new-line
Run Code Online (Sandbox Code Playgroud)
您的转译器应该将原始文件中每个源行的指令放入生成的文件中:
#line 3 "source.mycpp"
Run Code Online (Sandbox Code Playgroud)
如果您的 C++ 编译器根据这些指令(我使用过的指令)生成调试信息,那么当您单步执行代码时,您将单步执行到 source.mycpp 中的适当位置。