调试 gcc 插件
Debugging a gcc plugin
我目前正在为 gcc (9.2) 编写一个插件,并且正在寻找调试该插件的方法。为此,我使用 these instructions 构建了 gcc 以启用 gcc 的调试符号。然后我尝试通过使用以下命令在 gdb 中调用 gcc 来调试插件:
./xg++ -wrapper gdb,--args -fplugin=plugin_name.so
这使我能够单步执行 gcc 本身,看到它的符号。但是,我无法访问插件符号。该插件是使用 -g 标志编译的。
我还需要做什么才能单步执行插件代码?
我找到了解决方案:
g++(或本例中的 xg++)只是一个调用多个编译工具的驱动程序,包括实际的编译器 cc1plus 进程。所以为了确保 gdb 附加到这个进程,必须在 gdb 中设置以下设置:
set follow-fork-mode child
之后(您可能不得不让它 运行 一次)加载符号并逐步执行插件工作没有问题。
我目前正在为 gcc (9.2) 编写一个插件,并且正在寻找调试该插件的方法。为此,我使用 these instructions 构建了 gcc 以启用 gcc 的调试符号。然后我尝试通过使用以下命令在 gdb 中调用 gcc 来调试插件:
./xg++ -wrapper gdb,--args -fplugin=plugin_name.so
这使我能够单步执行 gcc 本身,看到它的符号。但是,我无法访问插件符号。该插件是使用 -g 标志编译的。
我还需要做什么才能单步执行插件代码?
我找到了解决方案:
g++(或本例中的 xg++)只是一个调用多个编译工具的驱动程序,包括实际的编译器 cc1plus 进程。所以为了确保 gdb 附加到这个进程,必须在 gdb 中设置以下设置:
set follow-fork-mode child
之后(您可能不得不让它 运行 一次)加载符号并逐步执行插件工作没有问题。