如何调试并单步调试转换为 C++ 的自定义语言源?

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该怎么办?

gdbVisual Studio等调试器,或者clanggccmsvc等编译器是否提供将调试信息映射到原始源文件的机制?

Pet*_*ker 4

正如对该问题的评论所暗示的那样,解决此问题的常用方法是指令#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 中的适当位置。