小编use*_*655的帖子

为什么java应用程序在gdb中崩溃但在现实生活中正常运行?

尝试从gdb运行java应用程序导致segfault,但单独运行app却没有.这个应用程序是.JAR,它使用JOGL和一些内存映射来与GPU通信.

下面的Stacktrace暗示了某种内存访问问题,但我不明白它为什么会出现在GDB中而不是现实生活中.是否有一些环境因素gdb需要知道才能正确执行?

这个问题在JVM OpenJDK 6和7以及Oracle JRE 7之间仍然存在.在启用segfault之前,oracle JRE在启动时运行得更远.所有段错误在试验之间的发生和位置都是一致的.

Segfault在GPU和驱动程序之间持续存在(!!):nvidia,radeon,fglrx current和fglrx beta(14.xx).GDB将成功附加到已经运行的程序实例,但是gDEBugger似乎不可能这样做,这最终需要工作.

没有意图使用gdb进行实际调试.相反,我试图使用gDEBugger来执行OpenGL调试.gDEBugger显然依赖于GDB作为其后端的一部分,因此如果GDB失败,gDEBugger也会失败.这导致尝试单独运行gdb以隔离问题.

gDEBugger output:
GDB String:  [Thread debugging using libthread_db enabled]  
GDB String:  Using host libthread_db library  /lib/x86_64-linux-gnu/libthread_db.so.1 .  
Thread Created: 140737353893632 (LWP: 3265)
Thread Created: 140737294624512 (LWP: 3266)
Thread Created: 140737293571840 (LWP: 3267)
Thread Created: 140737292519168 (LWP: 3268)
Thread Created: 140737155180288 (LWP: 3269)
Thread Created: 140737154127616 (LWP: 3270)
Thread Created: 140736913602304 (LWP: 3271)
Thread Created: 140736909629184 (LWP: 3272)
Thread Created: 140736908576512 (LWP: 3273)
Thread Created: …
Run Code Online (Sandbox Code Playgroud)

java opengl gdb jogl segmentation-fault

17
推荐指数
1
解决办法
2865
查看次数

如何在Eclipse中找到一个匿名内部类,只给出它的合成名称(Class $ N)?

如果我Class$N在使用Eclipse时只获得了类的名称,而没有通过代码并计算每个匿名类,我如何找到一个匿名内部类?是否有"跳转到匿名类声明"功能,我可以在其中输入$后缀号码?

Search-> Java功能没有帮助.

我正在使用VisualVM来查找CPU热点.我的热点是一个名为SomeClass $ 5的匿名类.VisualVM无法找到我的类的源代码,而我(以及其他人)无法找到如何将源附加到VisualVM,如此此处所示 .启动器插件无法解决此问题.

计算匿名声明不是一种选择,因为从长远来看,人为错误排序数百行的风险可能导致浪费大量时间试图处理错误的匿名类,只是为了发现它是错误的类.

作为一种解决方法,我正在用'System.out.println("this="+this.getClass().getName());'一种方法测试类, 以确保它是正确的,但必须有一个更好的方法.

java eclipse anonymous-inner-class visualvm

15
推荐指数
1
解决办法
1110
查看次数

C++编译器不支持C++11(例如std::unique_ptr)构建OpenWrt

我使用此处此处的说明在Ubuntu中构建OpenWrt,但我得到:

make[4]: Entering directory '~/openwrt/build_dir/host/cmake-3.11.1/Bootstrap.cmk'
make[4]: 'cmake' is up to date.
make[4]: Leaving directory '~/openwrt/build_dir/host/cmake-3.11.1/Bootstrap.cmk'
loading initial cache file ~/openwrt/build_dir/host/cmake-3.11.1/Bootstrap.cmk/InitialCacheFlags.cmake
CMake Error at CMakeLists.txt:92 (message):
  The C++ compiler does not support C++11 (e.g.  std::unique_ptr).


-- Configuring incomplete, errors occurred!
Run Code Online (Sandbox Code Playgroud)

这里有一个类似问题的解决方案。但是,我不清楚哪个CMakeLists.txt文件是我的情况下的“根”。我在 OpenWrt 论坛(或一般搜索引擎)上没有看到太多关于此失败的信息。

我得到的印象是 CMake 安装是由 OpenWrt 构建器本身下载的,因为我没有安装 CMake 并且安装 CMake 没有解决任何问题。

尝试查看最新的 OpenWrt v18.06.2。当构建失败时,我删除了克隆的目录并尝试了 v18.06.0-rc2。没有任何改善。

我也尝试过

export CMAKE_CXX_STANDARD=11
Run Code Online (Sandbox Code Playgroud)

在运行“make”之前,但它没有解决问题。

我的 g++ 安装状态:

g++ -v
Run Code Online (Sandbox Code Playgroud)

输出:

Using built-in specs.
COLLECT_GCC=g++ …
Run Code Online (Sandbox Code Playgroud)

c++ openwrt g++ cmake

6
推荐指数
1
解决办法
1万
查看次数

(怎么样)标量可以转换为另一个标量而不用GLSL转换?

(怎么样)标量可以转换为另一个标量而不用GLSL转换?

假设这两种类型具有相同的位数,则该问题中使用的"强制转换"的定义是在不改变数据本身的情况下改变对完全相同数据的解释.即(浮动)B00101111 == B00101111

在这个问题中使用的"转换"的定义是改变数据的解释以及将所述数据重新格式化为原始值的某些数学近似,即(float)1 == 1.0

GLSL 4.30.6规范的5.4.3暗示标量float-to-int和int-to-float构造函数仅执行转换: "当构造函数用于将任何浮点类型转换为整数类型时,小数部分浮点值被删除." - pg.87

棺材中的另一个钉子是5.1节上的这条线,pg.85: "没有类型转换操作符;而是使用构造函数."

目标是使用Buffer-Texture/Texture-Buffer和texelFetch(...)来获取float vec4s(128bit)并填充结构,例如:

struct MyStruct
{
int foo; //32bit
float bar; //32bit
int baz; //32bit
short blah; //16bit
short hmm; //16bit
} // 128bit total
Run Code Online (Sandbox Code Playgroud)

...但是很难确定如何将vec4分解为二进制子块并重新构建它们以设置所述结构值.

以下是理论上的工作吗?

MyStruct myUuberChunk = MyStruct(myVec4);
Run Code Online (Sandbox Code Playgroud)

使用float vec4s(或int vec4s)背后的理由是正确的,是为了带宽性能而将所有值都放在一个128位的读取中(大多数卡有四个32位内存总线).

opengl casting glsl

2
推荐指数
1
解决办法
981
查看次数