1
1
这是非常令人惊讶的行为。我无法复制它:
addr2行应该依赖于存储在可执行文件中的调试信息。并且调试信息应该包含绝对路径(不管给编译器提供了什么源路径),以避免在使用调试器时出现任何不明确的地方。无论我在哪里尝试,addr2行总是显示绝对路径。 假设您正在为构建系统使用make,一个选项,尽管可能很痛苦,但是将makefiles更改为使用非递归策略(无论如何,您确实应该做些什么)。在这样的系统中,只有一个make实例从一个工作目录(通常是源树的顶层)运行。因此,编译器的所有调用都指定源文件的完整路径(相对于源树的根目录)。事实上,如果addr2行总是在指定给编译器时显示文件名,这将解决您的问题。不是最好的解决方案,而是可行的解决方案。作为附带的好处,您将获得非递归make的所有优点。 |