backtrace相关内容

如何获取GDB中所有线程的回溯?

GDB中是否有与WinDbg的“!process 0 7"命令等效的命令? 我想提取转储文件中的所有线程以及它们在GDB中的回溯. “信息线程"不输出堆栈跟踪.那么,有没有可以执行的命令? 解决方案 通常,使用backtrace获取当前线程的堆栈,但是如果有必要获取所有线程的堆栈跟踪,请使用以下命令. thread apply all bt ..
发布时间:2020-05-13 21:00:36 其他开发

从SQL查询回溯到应用程序代码?

是否有办法在Rails开发日志中查找哪一行代码生成了MySQL语句? 为了进行一些性能优化,我想找到我应用程序的哪个部分正在创建哪个MySQL查询.当我查看日志时,我在执行的每个Web请求中都闪烁着数百个查询,我需要找出它们的来源. 我正在考虑向日志输出中添加一些变量,例如____FILE____和____LINE____. 有可能吗? 解决方案 https://gith ..
发布时间:2020-05-03 07:52:12 数据库

Linux上backtrace()的替代方法,可以找到静态函数的符号

在手册页中,Linux上的backtrace()函数显示: 请注意,“静态"功能的名称 没有暴露,并且在回溯中将不可用. 但是,在启用调试符号(-g)的情况下,像addr2line和gdb这样的程序仍可以获取静态函数的名称.有没有办法从流程本身内部以编程方式获取静态函数的名称? 解决方案 如果您的可执行文件(和链接的库)是用调试信息编译的(例如,使用-g标记为gcc或g++), ..
发布时间:2020-05-01 09:52:31 服务器开发

获取其他线程的回溯

在Linux中,要获取回溯,可以使用backtrace()库调用,但它仅返回当前线程的回溯.假设我知道它是TID(或pthread_t)并且可以保证它可以入睡,是否有任何方法可以获取其他线程的回溯? 似乎libunwind(http://www.nongnu.org/libunwind/)项目可以提供帮助.问题是CentOS不支持它,因此我不希望使用它. 还有其他想法吗? 谢谢. ..
发布时间:2020-05-01 08:12:52 服务器开发

获取Linux可执行文件加载地址(__builtin_return_address和addr2line)

我正在写一些代码,为每个内存分配存储一个回溯.然后,我将这些列表写到文件中以进行离线分析.在win32中,我使用_AddressOfReturnAddress,然后手动创建回溯.由于每次运行的地址都是随机的,因此我使用GetModuleInformation和lpBaseOfDll来获取基地址.这在没有FPO的x86上效果很好,对我来说足够了.然后,我使用win32 API加载PDB,以将地址转换 ..
发布时间:2020-04-23 11:02:35 服务器开发

Javascript回溯

如何在Javascript中获得回溯? 理想功能: 条目函数名称,或匿名函数的一些有意义的标识符, 每个级别的参数列表, 行号。 这可以在标准ECMAScript中完成吗? 如果没有,可以在常见的网络浏览器方言? 谢谢。 编辑 - 感谢您的建议。 我的方言不支持 arguments.caller 或 arguments.callee 。 我 ..
发布时间:2019-06-07 18:36:54 前端开发

在Ruby解释器出现段错误之后,是否有可能从corefile获取Ruby回溯?

注意:我使用的是段错误,在使用libxml-ruby gem来解释问题时遇到了问题,但我已经用上述gem修复了我的问题。这个问题的真正目的是从gdb和解释器本身遇到分段错误的核心文件查看Ruby backtrace(即解释器打印的内容与Ruby代码无法处理异常时打印的内容相同)。 在生成一个XML文档时,我得到了一个奇怪的segfault: $ b $ $ p $ / railsroot ..
发布时间:2018-04-21 14:41:03 其他开发

跟踪文件和调试日志记录的问题(PHP)

所以我试图制作一个方法,允许即时记录调试消息,并且我想包括消息发生的文件名和行号。我的第一个倾向是将debug_backtrace()作为日志记录方法的参数之一,返回一个包含当前文件名和行号的数组。 问题是,这只给出第一个文件(index.php)的文件和行。 index.php只是一个五行文件,它调用一个包含文件中的类的方法,所以行和文件信息总是说(index.php,第5行),无论什么都 ..
发布时间:2017-04-21 23:42:05 PHP

未捕获TypeError:无法读取未定义的属性'length'

我有一个插件可以访问许多元素上的长度属性。但是,javascript控制台指向jquery.min.js的第12行。 我如何回溯跟踪我的插件中的违规行? 解决方案 我如何追溯到我的插件中找到违规行? firebug 是调试的好方法那些错误。 alt text http://blog.getfirebug.com/wp-content/uploads/2010/05/d ..
发布时间:2017-04-21 19:49:20 前端开发

获取GDB中所有线程的回溯

我想将一个转储文件中的所有线程与它们的“ GDB中的回溯。 “信息线程”不输出堆栈跟踪。那么,是否有任何命令? 解决方案 通常,回溯用于给出当前线程的堆栈,但如果有必须给所有线程的堆栈跟踪使用以下命令 线程应用所有bt ..
发布时间:2017-04-17 22:34:34 开发方法

如何从崩溃中提取调试信息

如果我的C ++应用程序在Windows上崩溃,我想向我们的服务器发送有用的调试信息。 在Linux上,我将使用GNU backtrace ()函数 - 是否有等价的Windows? 有一种方法可以在程序崩溃后提取有用的调试信息? (“测试你的应用程序,所以它不会崩溃”的建议是没有帮助的 - 所有非平凡的程序将会有bug) 解决方案 函数 Stackwalk64 可用于在 ..
发布时间:2017-01-13 11:39:26 C/C++开发

在c ++中打印完整的backtrace

我想从一个C ++程序在Linux中转储一个类似于gdb中的格式的回溯。我试图使用backtrace()和backtrace_symbols()函数为此目的。这些返回的函数名和偏移量。我可以使用__cxa_demangle()函数来获取可读的函数名。 有没有办法获取文件/行位置,就像gdb做的? 解决方案 $ b Methode#4,显示了获取文件名和行的方法。但使用exter ..
发布时间:2016-10-28 01:29:33 服务器开发

GDB不能显示堆栈并显示“#1 0x0000000000000000 in ?? ()“。

我有一个多线程的C ++程序,在一些罕见的情况下死锁。这个问题很难重现,我只能在远程机器上重现它。 我想用来解决这个问题的方法是 运行程序 等待死锁 向其发送中止信号以生成核心转储 将转储复制回我的本地计算机 使用gdb调试它 我在远程机器上没有gdb,不能安装任何东西。 问题是当我调试核心转储(从远程机器上的死锁或正常运行的进程获得)时,大多数线程的回溯仅显示: ..
发布时间:2016-10-24 16:39:12 服务器开发

GDB不能显示堆栈并显示“#1 0x0000000000000000 in ?? ()“。

我有一个多线程的C ++程序,在一些罕见的情况下死锁。这个问题很难重现,我只能在远程机器上重现它。 我想用来解决这个问题的方法是 运行程序 等待死锁 向其发送中止信号以生成核心转储 将转储复制回我的本地计算机 使用gdb调试它 我在远程机器上没有gdb,不能安装任何东西。 问题是当我调试核心转储(从远程机器上的死锁或正常运行的进程获得)时,大多数线程的回溯仅显示: ..
发布时间:2016-10-24 15:12:42 服务器开发

是否有一个库调用addr2line?

我需要从C ++程序中获取addr2line(从回调函数调用的文件和行)提供的信息。是否有类似于addr2line的库调用? 编辑:我在Linux环境中工作。 我知道我可以直接调用addr2line,我知道我可以使用源代码 addr2line在我的程序(这也是GPL许可)。但我想调用一个库函数,如果它存在的话,更干净。 编辑:我将使用binutils的bfd,就像addr2lin ..
发布时间:2016-10-22 18:32:12 服务器开发

如何从崩溃中提取调试信息

如果我的C ++应用程序在Windows上崩溃,我想向我们的服务器发送有用的调试信息。 在Linux上,我将使用GNU backtrace ()函数 - 是否有等价的Windows? 程序崩溃后,有没有办法提取有用的调试信息? (“测试你的应用程序,所以它不会崩溃”的建议是没有帮助的 - 所有非平凡的程序将会有bug) 解决方案 函数 Stackwalk64 可用于在Wi ..
发布时间:2016-10-22 17:43:46 C/C++开发