2010-07-20 97 views
3

我刚刚打开了我的“hello world”应用程序(C++)的totalview,我只能查看汇编代码。如何查看totalview中的源代码?

是否有任何设置/标志我需要设置查看源代码?菜单栏 - >查看 - >源代码 - >来源不适用于我。

我试图调试的应用程序只是一个cout < <“Hello World”应用程序,只是为了让调试器启动并运行。

回答

6

让我们从简单的东西开始。

你是否用'-g'调试标志编译你的应用程序?调试器依靠编译器为其提供符号表和行号表,以将可执行文件中发生的情况映射回源代码。没有那个-g标志(或者如果你随后剥离你的应用程序)那个信息将不会出现,并且组装调试是你所期望的最好的。

如果你用-g编译过源码和可执行文件都放在同一个目录下,或者如果没有编译它们,它们就被移动了吗?编译器只知道源和可执行文件在创建时的位置,如果将它们移动,则有时调试器将无法找到源代码文件。在这种情况下,您可能需要通过定义源代码搜索路径来提供一些帮助。

写回来,让我知道如果-g修复了你的问题。如果没有,我们可以看看搜索路径等。

干杯, 克里斯

+0

-g几乎可以修复它。当我开始我的应用程序(不是你好世界,另一个更复杂的)我开始与2个断点。一个在我的类的构造函数中,另一个在我使用的同一个类中的某个函数中。第一个断点是okey。它停下来,我看到在sourecode停止的地方。但是当我使它运行到即将到达的下一个断点时,它显示了我的程序集...为什么是这样? – Jason94 2010-08-04 08:52:05

2

我意识到Jason94几乎肯定解决了他的问题,一些其他的方式,但我想我可以附和这里回答这个问题,因为它是一个很好的问题。

对于这种特殊情况,知道该程序是否为多线程将会很有趣。 TotalView旨在让您使用多线程程序,并且它具有可能令用户感到惊讶的特性。默认情况下,它不会总是将您关注到遇到断点的线程。所以你的程序实际上可能停在另一个线程的第二个断点处。假设你有6个线程(我们将它们编号为0 - 5),并在例程中设置一个断点。线程0是你关注的那个,你点击“去”。程序运行并且线程4首先打断点。默认情况下,当断点被击中时,断点将停止整个过程。在调试器中,您可能会看到程序集,它表示线程4到达断点时线程0的位置。 您可以检查根窗口或线程窗格以查看其他线程的状态,并且您可能会看到其中一个表示“B2”(对于断点2)。然后,您可以单击该线程,TotalView将您重新调整到该线程,并且您会看到它坐在断点处。

为什么我们这样做?那么,因为我们认为只是因为另一个线程发生了断点而让你的焦点“从你身上扯开”是令人困惑/不安的。所以默认情况下,我们让用户控制他们的线程焦点。

您可以更改哪一个会告诉totalview将进程窗口重新调整到“事件地点”。您可以设置,如果您希望让TotalView重新将注意力集中在断点上,但请注意,当您这样做时,您可能会从一个线程跳到另一个线程。

另一种可能性是TotalView由于某种原因而停止了进程,而不是被命中的断点。程序段错误?检查进程窗口顶部的状态栏,查看线程和进程的状态。

无论如何 - 只是想发布这个记录。

+0

您能否提供有关此首选项设置的参考? – Stabledog 2017-06-22 17:56:29