- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个动态库 (libdatamodel.so) 文件,它与我的新建/删除覆盖静态链接。有一些分配没有被我的覆盖选中,我不确定为什么。
我使用调试器从应该使用我的替代的调用之一获取堆栈跟踪,但实际上没有。
堆栈跟踪:
thread #124, name = 'run-vizqlserver', stop reason = breakpoint 7.1
frame #0: 0x00007fa70f1e9800 libc.so.6`__GI___libc_malloc
frame #1: 0x00007fa70fad6e88 libstdc++.so.6`operator new(sz=952) at new_op.cc:50
frame #2: 0x00007fa5c5701fed libdatamodel.so`void std::vector<FieldName, std::allocator<FieldName> >::_M_assign_aux<boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > > >(boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > >, boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > >, std::forward_iterator_tag) [inlined] __gnu_cxx::new_allocator<FieldName>::allocate(unsigned long, void const*) at new_allocator.h:104
frame #3: 0x00007fa5c5701fcb libdatamodel.so`void std::vector<FieldName, std::allocator<FieldName> >::_M_assign_aux<boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > > >(boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > >, boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > >, std::forward_iterator_tag) [inlined] std::allocator_traits<std::allocator<FieldName> >::allocate(std::allocator<FieldName>&, unsigned long) at alloc_traits.h:360
frame #4: 0x00007fa5c5701fcb libdatamodel.so`void std::vector<FieldName, std::allocator<FieldName> >::_M_assign_aux<boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > > >(boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > >, boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > >, std::forward_iterator_tag) [inlined] std::_Vector_base<FieldName, std::allocator<FieldName> >::_M_allocate(unsigned long) at stl_vector.h:170
frame #5: 0x00007fa5c5701fcb libdatamodel.so`void std::vector<FieldName, std::allocator<FieldName> >::_M_assign_aux<boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > > >(boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > >, boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > >, std::forward_iterator_tag) [inlined] FieldName* std::vector<FieldName, std::allocator<FieldName> >::_M_allocate_and_copy<boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > > >(unsigned long, boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > >, boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > >) at stl_vector.h:1224
frame #6: 0x00007fa5c5701fcb libdatamodel.so`void std::vector<FieldName, std::allocator<FieldName> >::_M_assign_aux<boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > > >(this=0x00007fa4cc9bdd30, __first=bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > > @ rbx, __last=bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > > @ r15, (null)=<unavailable>) at vector.tcc:273
frame #7: 0x00007fa5c56ff372 libdatamodel.so`AbstractQuery::GetOutputFields() const [inlined] void std::vector<FieldName, std::allocator<FieldName> >::_M_assign_dispatch<boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > > >(this=<unavailable>, __first=<unavailable>, __last=<unavailable>) at stl_vector.h:1336
frame #8: 0x00007fa5c56ff36a libdatamodel.so`AbstractQuery::GetOutputFields() const [inlined] void std::vector<FieldName, std::allocator<FieldName> >::assign<boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<FieldName, std::allocator<FieldName> > > >, void>(__first=<unavailable>, __last=<unavailable>) at stl_vector.h:508
frame #9: 0x00007fa5c56ff36a libdatamodel.so`AbstractQuery::GetOutputFields() const [inlined] AbstractQuery::GetOutputVector(this=<unavailable>, c=<unavailable>) const at AbstractQuery.cpp:210
这是 std::vector 没有调用我的 new() 的问题还是与 boost 内联对分配器的调用有关?我无法制作 boost 模板类型的正面或反面。
为了完整性,这里是我如何确认我的新/删除确实在我的库中定义
$ nm -C libdatamodel.so | egrep "operator (new|delete)"
000000000017f1c0 T operator delete[](void*)
000000000017f1d0 T operator delete[](void*, std::nothrow_t const&)
000000000017f1a0 T operator delete(void*)
000000000017f1b0 T operator delete(void*, std::nothrow_t const&)
000000000017f150 T operator new[](unsigned long)
000000000017f190 T operator new[](unsigned long, std::nothrow_t const&)
000000000017f100 T operator new(unsigned long)
000000000017f140 T operator new(unsigned long, std::nothrow_t const&)
最佳答案
经过大量的实验和研究,我找到了两三个解决这个问题的好方法。我最初的问题是在 Windows 上工作的内存覆盖在 Linux 上不起作用。 Windows 将在运行时加载程序出现之前解析库中可以解析的任何符号。在 Linux 上,除非您使用其中一个 -Bsymobolic 链接器标志,否则情况并非如此。
我选择不更改默认链接,因为担心会产生意想不到的副作用。所以我将我的内存覆盖移动到他们自己的库并将它们直接链接到可执行文件。由于我的原始库是用 dlopen 打开的,运行时加载程序将它放在符号解析列表的后面。将我的内存覆盖直接链接到 exe 将它们放在列表的高位并且一切都按预期工作。我也可以使用 LD_PRELOAD 来实现这个目标,但我选择在构建时完成这一切。
关于c++ - 为什么我的全局 new() 覆盖被绕过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52711298/
我知道 C++ 中的 overriding 是什么。但是,是否存在覆盖?如果有,是什么意思? 谢谢。 最佳答案 在 C++ 术语中,您有 覆盖(与类层次结构中的虚拟方法相关)和 重载(与具有相同名称但
我想捕获位于另一个元素下的元素的鼠标事件。 这是我所拥有的示例:http://jsfiddle.net/KVLkp/13/ 现在我想要的是当鼠标悬停在红色方 block 上时蓝色方 block 有黄色
以下报道 here我尝试创建一个带有重叠散点图的箱线图。 但是当我运行时: In [27]: table1.t_in[table1.duration==6] Out[27]: counter 7
有一个 JS Fiddle here , 你能在不克隆到新对象的情况下替换 e.target 吗? 下面重复了那个 fiddle 的听众; one.addEventListener('click',
首先要解决重复的可能性: 我不是询问 Override 是什么、它的含义或 @Override 在 java 文档注释之外。那是我不是问 /**Some JavaDoc Comment*/ @over
我想要高于定义的数组。它存储点及其坐标。 public static List simpleGraph(List nodes) { int numEdges = nodes.size() *
我在 http://olisan.dk/blog/ 有一个博客- 如您所见,有一个 28 像素的高间隙(边距顶部)...在 style.css 中: margin-top: 0; 也被设置为 marg
Vulkan 句柄是指向 struct 的不透明指针,或者只是无符号的 64 位整数,具体取决于 VK_USE_64_BIT_PTR_DEFINES 的值: #if (VK_USE_64_BI
我正在尝试提供一个行为类似于 DataGridTextColumn 的 DataGrid 列,但在编辑模式下有一个附加按钮。我查看了 DataGridTemplateColumn,但似乎更容易将 Da
使用 Django 1.10 我想在用户名中允许\字符,因为我在使用“django.contrib.auth.middleware.RemoteUserMiddleware”的 Windows 环境中
我正在尝试使用 ffmpeg 将 Logo 放入 rtmp 流中。我的 ffmpeg 版本是 ffmpeg version 4.3.1目前在我的复杂过滤器中,我有: ffmpeg -re -i 'v
是否有用于Firebase 3存储的方法/规则来禁用文件更新或覆盖? 我为数据库找到了data.exists(),但没有为存储找到解决方案。 最佳答案 TL; DR:在Storage Security
我有两个 Docker Compose 文件,docker-compose.yml看起来像这样 version: '2' services: mongo: image: mongo:3.2
我需要覆盖 JPA 中的集合表吗?也许有人有想法 public class nationality{ @Embedded @AttributeOverrides({
嗨,我正在使用 WIX 和下面的代码将文件安装到目录中。 我的应用程序的工作方式是用户可以在该目录中复制他们自己的文件,覆盖他们喜欢的内容
我正在尝试为 Lua 中的字符串实现我自己的长度方法。 我已成功覆盖字符串的 len() 方法,但我不知道如何为 # 运算符执行此操作。 orig_len = string.len function
在Scala 2.10.4中,给出以下类: scala> class Foo { | val x = true | val f = if (x) 100 else 200
我想做上面的事情。 我过去覆盖了许多文件...... block ,模型,助手......但这个让我望而却步。 谁能看到我在这里做错了什么: (我编辑了这段代码......现在包括一些建议......
根据javadoc An instance method in a subclass with the same signature (name, plus the number and the ty
我有一段代码,只要有可用的新数据作为 InputStream 就会生成新数据。每次都覆盖同一个文件。有时文件在写入之前变为 0 kb。 Web 服务会定期读取这些文件。我需要避免文件为 0 字节的情况
我是一名优秀的程序员,十分优秀!