使用Eclipse和CDT来调试C++代码,变量窗口很麻烦,对于标准模板库或boost中定义的类型(例如shared_ptr)而言,信息量不大.
只是一个例子,这对于std :: vector来说可能是这样的:
bar {...}
std::_Vector_base<TSample<MyTraits>, std::allocator<TSample<MyTraits> > >
_M_impl {...}
std::allocator<TSample<MyTraits> > {...}
_M_start 0x00007ffff7fb5010
_M_finish 0x00007ffff7fd4410
_M_end_of_storage 0x00007ffff7fd5010
Run Code Online (Sandbox Code Playgroud)
即使关于这些类型的内部结构的这些信息可能有用,但在几乎任何情况下我都期望在这里有更清晰的表示,即std :: vector的值列表.是否有任何工具,插件或其他修改可以做到这一点?
编辑
以下解决方案不适用于Linux.我正在使用ubuntu 14.04,eclipse,g ++,gdb.
我找不到包gdb-python和linux不使用mingw
java.io.InputStream.skip()说"抛出:IOException - 如果流不支持搜索,或者是否发生其他一些I/O错误."
我怎么知道哪个文件流支持搜索?
当谷歌我找到Seekable,但我可以看到简单的FileInputStream,ByteArrayInputStream ...也支持skip(),我的意思是不给IOException; 他们没有扩展Seekable.
使用参数-XX:+ HeapDumpOnOutOfMemoryError启动JVM.但它并没有在outofmemory上创造堆积.
当本地分配失败时,Java不会创建heapdump吗?
以下是日志:
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 1184288 bytes for Chunk::new
# An error report file with more information is saved as:
# D:\product\bin\hs_err_pid5876.log
java.lang.OutOfMemoryError
Run Code Online (Sandbox Code Playgroud)
- 编辑 -
最大堆大小设置为4GB,系统RAM大小为16GB,当内存不足时,它使用> 11GB(由Windows任务管理器显示).
从与@ alain.janinm的讨论....我想我可以得出结论,JVm甚至没有足够的内存来生成heapdump.
那么,创建heapdump是否有可能导致JVM使用那么多系统内存
java java-native-interface out-of-memory native-code heap-dump
我们无法实例化java.io.FilterInputStream,因为它没有公共构造函数,我们甚至不需要不扩展它.
他们为什么不把它作为抽象类呢?
java ×3
c++ ×2
inputstream ×2
c ×1
dirent.h ×1
eclipse ×1
eclipse-cdt ×1
filter-input ×1
gdb ×1
heap-dump ×1
mkdir ×1
native-code ×1
seek ×1
visual-c++ ×1