问题标签 [totalview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
487 浏览

c++ - 大型可执行文件导致调试器挂起

我有一个大小为 190 MB 的 C++ 二进制文件。当我将此二进制文件放入 dbx 并尝试创建断点时,dbx 挂起。当 dbx 挂起时,我观察到它的内存迅速增长到 10 GB 以上。TotalView 允许我设置断点;但是,它显示的所有数据都是伪造的。我已经成功调试了许多其他较小的二进制文件,所以我的预感是这个二进制文件的大尺寸是问题所在。

二进制:ELF 32 位 MSB 可执行文件 SPARC32PLUS 版本 1,V8+ 必需,动态链接,未剥离。
编译器:CC:Sun C++ 5.9 SunOS_sparc 2007/05/03。
数据库:7.6 SunOS_sparc 2007/05/03。
TotalView:8.2.0-0
操作系统:Solaris 10

我如何使用 Dbx:

Dbx 永远不会从此命令返回,我最终必须从单独的终端杀死 Dbx。

我尝试了一些没有成功的事情:
1. 切换到动态链接大多数库,这将二进制大小减少到 19 MB。
2. 在 Solaris x86 上试过。
3. 将软件编译为64位。

有谁知道什么可能导致这种情况发生以及如何解决这个问题?

0 投票
1 回答
286 浏览

dynamic - 如何在totalview中潜水动态二维数组

在此线程之后,我想分享一个相关问题:如何在 totalview 中将 int ** 作为 2D 数组进行潜水?(这里讨论了解决方案)。如果有人遇到同样的问题,我希望这会有所帮助!

假设在我的代码中我有一个动态二维数组设置如下

现在,在 TotalView 中,当您从 Stack Frame 跳入 array2D 时,变量窗口应该会弹出并显示如下内容:

以下步骤类似于我在上面提到的线程中提到的 Chris Gottbrath ,但在我们应该何时以及如何准确地转换 Type 方面它变得有点复杂。所以,

第 1 步:通过鼠标中键单击或双击该值,深入指针的值以取消引用指针。

这样做应该会给你这样的东西:

第 2 步:现在将类型转换为一级。在“类型”通道中,将 int * 更改为

然后点击进入。这样,调试器就知道 array2D 是指向大小为 5 的指针列表的指针。请注意,我的动态数组是指向指针列表的指针。现在,上面显示的值将变为如下所示:

我们现在看到 array2D 有 5 个元素,它们是指向子列表的指针。现在,如果我们深入研究这些元素中的任何一个,我们还不会得到整数列表。要查看整数,我们需要再次取消引用,对于我们进入的每次潜水。

第 3 步:假设我们要深入元素 [2] 以检查从 array2D[2][0] 到 array2D[0][4] 的整数。当我们在面板中单击该行时,我们会看到:

我们现在正在查看指向子列表编号 2 的指针,该子列表应该包含整数。

第 4 步:现在,再次深入了解取消引用,我们应该看到如下内容:

步骤 5:现在在第二级中投射类型。在“类型”频道中,将 int 更改为

然后点击进入。我们开始了:我们看到元素 array2D[2][0] - array2D[2][4]

虽然潜水一维阵列很简单,但二维阵列潜水似乎需要仔细的潜水和施法顺序。我尝试了其他方法,但它们无法正常工作。所以,我希望这对偶然发现同样问题的人有用。

0 投票
1 回答
121 浏览

c - OSX 上 Totalview 调试软件的问题

我正在尝试在 OSX 上进行一些多线程调试。我最初试图通过 QtCreator IDE 使用 GDB,但是我永远无法让它完全正确地工作。我现在正在使用 Totalview 评估,一旦我将它指向我的可执行文件,我就会得到以下信息

其中 exc1 是我的可执行文件。这些消息是什么意思?我该如何解决问题?我在这里标记 GDB 以防万一

0 投票
0 回答
667 浏览

php - 使用 PHP 通过 ODBC 查询数据源

我正在尝试使用简单的 SQL 查询来查询数据源,但出现以下错误:*Warning: odbc_exec() [function.odbc-exec]: SQL error: [SimbaLNA][Simba][SimbaEngine ODBC Driver ]select (<< ??? >>[agent_id], [agent_name]) from agent;,SQLExecDirect 中的 SQL 状态 37000 在 C:\xampp\htdocs\Tas\showtables.php 第 22 行*

我知道我的 ODBC 连接已建立并正确连接,因为我能够执行以下代码并接收所有表名的列表。:

当我继续并尝试执行以下代码时:

我收到上述错误。有谁知道为什么会发生这种情况?

如果需要更多信息,请告诉我。

提前谢谢了

0 投票
1 回答
313 浏览

debugging - 尝试使用 TOTALVIEW 调试 CUDA 代码时出错

我正在尝试修复与 SEGMENTATION FAULT 相关的一些错误。因此,当我尝试使用逐步调试代码来修复错误时,我遇到了几个错误:

错误:cuda_trace_obj::initialize_cuda_library:Cuda 初始化()返回 CUDBG_ERROR_INITIALIZATION_FAILURE(20)!

错误:cuda_system_status_t::initialize:错误 CUDBG_ERROR_UNINITIALIZED(5) 获取设备计数

任何有关上述错误的帮助或指针表示赞赏。

0 投票
1 回答
1367 浏览

openmpi - 检查 lmgrd 日志文件,或尝试 lmreread - 在 Totalview 中加载 Open MPI 程序时出错

当我在 TotalView 中加载程序时,我收到一个警告对话框“检查 lmgrd 日志文件,或尝试 lmreread”,并且程序没有加载。

我首先从“程序”选项卡中选择正确的程序,然后从“并行”选项卡中选择“打开 MPI”并使用四个任务。当我单击“确定”时,会出现警告对话框并且不会加载调试器。

我正在使用 Totalview 8.9.2-2 和 Open MPI 1.4.5

0 投票
2 回答
626 浏览

c++ - Totalview 获取 QString 的值

在此处输入图像描述

当我在 totalview 调试器中双击QString对象时,会出现此窗口。我怎样才能得到它的确切价值。

我试过command.toUtf8().constData()了,但是打印出来了Cannot find name "toUtf8"

0 投票
1 回答
129 浏览

c - 将 totalview 调试器附加到变量

所以我正在尝试调试代码。但由于某种原因,它没有通过我需要它的部分。调用这段代码的控制变量是一个指针“*sret”。我尝试了很多,但没有运气。它是一个 C 程序。有没有办法可以在变量上附加观察点?因为它无法识别变量......但它可以识别文件。

0 投票
1 回答
865 浏览

c++ - 使用核心文件查找消耗的内存

我正在分析我们软件中的高内存消耗问题。我有一个对应于这种高内存消耗的核心文件(这个核心文件是通过杀死我们生成核心文件的应用程序来生成的)。但是我无法使用这个核心文件查看实际的内存消耗。我使用了 Totalview 和 gdb ......使用这两个我没有得到我的进程消耗的总内存的快照以及哪个库正在消耗所有内存。

这种内存消耗持续了 10 到 20 天,因此我试图找出导致这种高内存消耗的原因。

valgrind 可以帮我分析这个核心文件吗?

非常感谢任何输入/建议。

0 投票
0 回答
404 浏览

fortran - mpif90 编译的 Fortran 程序调用 h5fc 编译的子程序,一些传递的参数得到错误的地址

我已经使用 Fortran 程序有一段时间了,最​​近的任务是让它产生一些HDF5输出。我创建了一个子程序来编写 h5 文件,它需要从原始 Fortran 程序传递一些参数。Fortran 程序包含 mpif.h 并使用mpif90编译,而子例程使用h5fc编译(如果重要,它将在主程序中的并行循环中调用)。

我从 hdf5 子例程中得到不正确的日志输出,然后进入 totalview 试图找出问题,并注意到一些(但不是全部)参数在子例程中曾经是错误的地址(主程序一切正常)。每当我注释掉所有 hdf5 函数并用 mpif90 编译子例程时,一切看起来都很好。这当然不允许我使用任何我需要的 HDF5 例程来创建用于输出的 h5 文件。

以下是相关代码:

我确定我已经一致地声明了所有内容,但是 Totalview 总是会返回以下带有错误地址的变量:

  • 顶点
  • num_vert
  • num_theta(但不是 num_phi)
  • 数据只有第一个条目,但它是正确的

另一件事可能值得一提:在 Totalview 中,主程序 (mpif90) 中变量的类型如下所示:

而在子例程(h5fc)中,类型显示在 Totalview 中,如:

(我猜是编译器的区别?)

最后,这里是相关代码的编译行:

h5fc -g -L/usr/lib64/ -lhdf5_fortran -lhdf5 -c HDF5_sub.F90

mpif90 -g -c main_prog_mpif90.F90

所以我认为程序和它的一个子程序之间存在问题,这些子程序已经用不同的编译器(在本例中为 mpif90 和 h5fc)编译。如果是这种情况,是否有任何解决方法?换句话说,一个人可以用不同的编译器编译一个主程序及其子程序,并且期望传递的参数的数据类型没有问题吗? 必须采取哪些预防措施?

当然,我很有可能在做其他完全错误的事情(我是 HDF5 的新手)。

解释越简单对我越好!

提前谢谢大家。

UPDATE1: @Vladimir F, h5fc -v 提供了一大堆输出,但我猜它是 gfortran(它在第一行显示为Driving: gfortran -O2 ...)。mpif90 -v 说ifort 14.0.1。带有此代码的系统未连接到 Internet,因此我无法在此处复制和粘贴(对不起!)。至于整数*4 注释,我们实际上有一个数据类型模块,我只是为问题简化了它。主程序使用的模块如下:

这个模块也是用mpif90编译的,当我尝试在hdf5子程序中使用它时,它不会编译。我还尝试创建一个与主程序使用的相同的 hdf5 数据类型模块,除了使用 h5fc 编译该模块,但参数仍然作为错误地址出现。(我能说什么,愿意在这一点上尝试几乎任何事情)。

UPDATE2: 我刚刚发现了这个问题(不知道我之前是怎么错过的),我认为它回答了我关于使用两种不同编译器的问题。这个问题是几年前的问题,所以如果有人认为现在有解决方案,请随时发布。对于它的价值,我只需要让我的主程序将一些参数写入文件,hdf5 子例程将成为一个独立的程序,它将读取文件并从该数据生成 h5 文件。

再次感谢大家花时间提供帮助。