问题标签 [gflags]

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 投票
2 回答
6907 浏览

debugging - gflags 不适用于 64 位 Windows 7,但 32 位环境

我正在尝试在 64 位 Windows 7 上调试 32 位程序。

所以我使用 gflags 为该应用程序设置调试器。我填写了应用程序的路径,以及调试器的路径。但是当我启动应用程序时,WinDBG 没有运行。

相同的配置适用于 32 位 Windows 7。

那么,在 64 位环境下调试 32 位应用程序是不可能的吗?

0 投票
2 回答
13213 浏览

windows - GFlags 设置以捕获堆损坏(页面堆除外)?

在一个生产站点上,我们的应用程序(*)反复崩溃,但不可重现。分析崩溃转储清楚地表明这是一个堆损坏:崩溃位于不同的位置,但总是访问kernel32!HeapFree/内部的违规行为ntdll!RtlpLowFragHeapFree。Win Dbg!analyze -v还报告堆损坏。

到目前为止,我们尝试的是使用GFlags选项Page Heap运行应用程序。问题是页面堆的内存开销使得应用程序不再运行(达到 32 位进程的虚拟内存限制)。

所以,我们不能使用 Page Heap。添加哪些其他标志会很有用,这样我们要么

  • 在腐败现场崩溃
  • 或者至少可以从崩溃转储中获取更多信息,这些信息最终会在我们崩溃时生成HeapFree

我们目前正在尝试这些标志:

希望下一个故障转储将包含更多有关问题所在的信息。

我考虑了这些标志,但现在将它们排除在外:

我(也)遇到的一个问题是我不确定这些标志在发生内存损坏时如何提供帮助。当有东西写入保护页时,Page Heap 显然会产生访问冲突,但是其他标志如何操作?

我是否必须使用 Application Verifier 运行应用程序才能获得这些其他标志的帮助?或者当检查代码检测到某些东西时会引发异常?

这些标志的哪个组合最有意义,以便应用程序仍然可以在生产中以正常的性能和内存消耗运行?


(*) : 它是工业自动化领域的 32 位 Windows 桌面应用程序。在这种情况下在 Win7 64 位上运行(它在很多其他站点上都很好)。

0 投票
1 回答
738 浏览

debugging - 页面堆不记录有用的堆栈信息?

我正在尝试使用普通页面堆(未满)测试崩溃场景(在隔离的测试应用程序中)。

我已经设置了标志

我正在用一个元素覆盖一个整数缓冲区

事实上,当向量 d'tor 中的块被释放时,我得到了休息。正确报告了中断的调用堆栈:

但是,当我查看错误分配时,我只得到:

也就是说,有一个分配堆栈跟踪,但它停止在RtlAllocateHeap这显然完全没用。

查看内存中的堆栈跟踪:

看来实际上没有更多的记录了。

如何修复页面堆以记录有用的堆栈跟踪?

请注意,Test 项目不是使用 FPO (/Oy) 编译的,我没想到RtlAllocateHeap会受到 FPO 的影响?


更新:我通过手动进入分配检查了相关调用的 FPO 特性(见下文),看起来VC80(VS2005)运行时库mallocop newVC80(VS2005)运行时库都启用了某种形式的 FPO ......所以也许这弄乱了页堆的堆栈数据库的堆栈跟踪。


0 投票
1 回答
2235 浏览

python - 如何在 Python webapp(Google App Engine)中导入 gflags?

我想为我的 Google App Engine webapp 使用 Google Calendar API。我按照此处的说明(https://developers.google.com/google-apps/calendar/instantiate)配置应用程序,这需要我导入 gflags。我在这里下载了 gflags ( https://code.google.com/p/python-gflags/downloads/list ) 并将其解压缩到与我的 webapp 的 main.py 相同的目录中。然后我通过在命令行中运行“Python setup.py install”来设置 gflags。设置成功,显示如下:

安装 c:\python27\lib\site-packages\python_gflags-2.0-py2.7.egg

python-gflags==2.0 的处理依赖项

完成了 python-gflags==2 的处理依赖。

但是这条线仍然不起作用:

我在日志中收到以下错误:

NotImplementedError:必须安装 gflags 库才能使用 tools.run()。请安装 gflags 或最好切换到使用 tools.run_flow()

但我以为我已经安装了 gflags?我也很困惑为什么 setup.py 在我的 c:\python27\lib 文件夹中创建了一个 Python egg,这是否意味着 Google App Engine 将无法访问它?

0 投票
1 回答
812 浏览

windows-8 - Microsoft 是否已弃用 GFlags 和 UMDH?

在 Windows Vista 中,我发现 UMDH 非常有用,但我在 Windows 7/8 中找不到它,微软是否已弃用 GFlags 和 UMDH?如果是这样,我可以通过 Windows 7/8 批准的工具中的调用堆栈获取堆上分配的日志吗?

0 投票
1 回答
187 浏览

cmake - cmake:如何包含另一个项目生成的标头

gflags有 cmake-migration 分支,
它会在其中生成标头${buildir}/include
我如何包含生成的标头?
var喜欢的gflags_generated_headers吗?谢谢!

0 投票
2 回答
810 浏览

c++ - 为什么有时人们更喜欢 strtoll 而不是 strtol,即使他们只想将字符串转换为 int32?

这是我从谷歌的 gflags 源代码中读到的代码片段

和宏定义 strto64

显然,作者更喜欢 strtoll 而不是 strtol。根据这两个函数的手册页,一个返回long long int,另一个返回long int。如果您只想要一个 int32,它们都可以,对吧?

那么这两个函数有什么区别呢?为什么首选 strtoll?

0 投票
1 回答
233 浏览

visual-c++ - 使用调试工具后,我的应用程序运行速度非常慢

我试图在我们的应用程序中调试堆损坏问题,并使用 appverifier、gflags 和 _CrtSetDbgFlag 来尝试跟踪它。现在我已经清除了 gflags,从应用程序验证程序中删除了我们的应用程序并删除了 _CrtSetDbgFlag,但在我的计算机上,现在该应用程序速度非常慢(仅启动它就超过 15 分钟)。

我如何运行应用程序并不重要,即使关闭了 Visual Studio 并双击发布可执行文件,我也会得到同样的缓慢行为。

谁能指出我可能在我的机器上搞砸了这个问题?

谢谢

0 投票
1 回答
1308 浏览

windbg - 如何从 DLL 的堆标记中受益?

如何使用 GFlags 设置Enable heap tagging by DLL并从中受益?

!heap -t我知道如何激活进程的设置,但在 WinDbg的输出中没有找到有用的信息。我期待一些这样的输出:

这样我就可以确定哪个堆是由哪个 DLL 创建的,然后例如确定内存泄漏的来源。

这是对“由 DLL 进行堆标记”一词的误解,还是我需要更多命令才能获得所需的结果?

到目前为止我的研究:

  • 我搜索了有关此主题的教程,但找不到详细说明
  • 我阅读了 WinDbg .hh !heap,但也没有详细解释。标签仅用于!heap -b
0 投票
1 回答
2967 浏览

compilation - 编译 Glog 时出错

在运行 './configure' 后运行 'make' 编译 glog 时遇到问题然后出现错误:

架构 x86_64 的未定义符号:“testing::internal::StrStreamToString(std::__1::basic_stringstream, std::__1::allocator > )”,引用自: testing::internal::String testing::internal:: logging_unittest-logging_unittest.o 中的StreamableToString(void const const&) testing::internal::String testing::internal::StreamableToString(int const&) 在 logging_unittest-logging_unittest.o ld 中:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用) make:* [logging_unittest] 错误 1

我在 Mac OS X 上使用 glog-0.3.3。那么我如何在编译 glog 时进行测试?

在另一种情况下,我使用 Macport 安装了 glog 和 gflags,然后运行了一个小程序。它将产生一个错误:“错误:未知的命令行标志'logtostderr'”

我相信这是链接到 gflags 的问题。那么我该如何解决它。谢谢