C++.如何知道定义方法/变量的位置?或者如何询问编译器呢?

rmb*_*chi 2 c++ compiler-construction methods compilation

在我们非常大的框架中,跟踪一个包中的错误,我最终调用了一个函数.

这个函数没有在我正在处理的包中定义,对包本身的搜索并没有给我任何关于在框架中定义该函数的地方的线索.

显然它是在框架内某处的另一个包中定义的.

我必须知道这个函数究竟做了什么,所以我想"询问"编译器定义的位置....因为包编译得很好,所以必须在某处定义函数!;-)

怎么办?

Mar*_*n M 5

我会在"未知"函数的调用上设置断点并运行调试器.当调试器在此时停止时,我将进入该函数并打印回溯.它应该进入函数并提供函数所在源文件的信息.

使用gcc/gdb,您可以像这样运行您的应用:

gdb ./path_to_your_app/app_binary
(gdb) break SourceWhereYourFunctionIsCalled.cpp:123
(gdb) run
(gdb) step
(gdb) bt

使用Visual Studio,它更容易.只要设置一个断点,就我记得的F10步入.将比源文件自动打开.

我假设你有一个调试版本.