我正在寻找有效的方法来逐步调试NodeJS服务器代码.此刻我使用了几十个console.log(),这非常困难.完美的工具是允许我检查堆栈中每个变量的值并逐行跟踪我的程序的工具.首选操作系统= MacOS/Linux.可能吗?
我正在和使用赫克托的卡桑德拉谈话.有没有办法可以在服务器上跟踪执行的查询?
我已经厌倦了为Cassandra和日志记录活动中提到的org.apache.cassandra.thrift.CassandraServer添加启用DEBUG日志记录.但这并没有提供太多信息(例如,执行切片查询,但没有提供更多信息).
有没有更好的办法?
我对如何使用.NET Trace和Debug类感到困惑.
你为什么要使用Trace而不是Debug呢?
Trace.TraceError()
Trace.TraceInformation()
Trace.Assert()
Debug.WriteLine()
Debug.Assert()
Run Code Online (Sandbox Code Playgroud)
另外,我知道在Release配置模式下会忽略Debug语句,但如果跟踪语句一直适用,这对性能有何影响?
我有一个由许多C++类组成的大型框架.有没有办法在运行时使用任何工具来跟踪正在构建和当前存在的所有C++对象?
例如,在特定时间t1,应用程序可能具有对象A1,A2和B3,但是在时间t2,它具有A1,A4,C2等等?
这是一个跨平台框架,但我熟悉在Linux,Solaris和(可能)Mac OS X中工作.
我在嵌入式系统上有很大的C代码代码库,遗憾的是没有自动测试用例/套件.这使得重构和重构代码成为一项危险的任务.
手动编写测试用例非常耗时,因此我认为应该可以自动执行此过程的至少某些部分,例如通过跟踪所有函数调用和记录输入和输出值.然后,我可以在测试用例中使用这些值(这对所有人都不起作用,但至少对于某些函数而言).也可能基于收集的数据创建模拟函数.
拥有这样的测试用例会使重构变得不那么危险.
有没有解决方案已经可以做到这一点?如果我必须自己编写代码,最简单的方法是什么?
我想ctags用于查找函数定义,并将它们包装在记录参数值的函数中.另一种可能性可能是gcc编译器插件.
使用System.Diagnostics跟踪时,是否在发布模式下不在生产 ASP.NET应用程序上删除"默认"跟踪侦听器时会产生显着(可测量)性能影响,在编译时定义常量但在运行时没有附加调试器?TRACE
为了澄清,问题是"默认"跟踪侦听器对使用其他跟踪侦听器的应用程序的影响,而不是System.Diagnostics跟踪的替代方案.
没有连接调试器时,是否有任何衡量默认跟踪侦听器的影响?是否已经对生产中的影响做了任何基准测试,从而忽略了代码中的"remove"元素:
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<remove name="Default" />
<add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\myListener.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这个问题与.NET跟踪不同:什么是"默认"监听器?从某种意义上说,当在Visual Studio下运行并更新调试UI时,其他问题集中在默认侦听器的影响上,而这个问题主要关注生产环境中的发布代码.
Console.WriteLine()和 和有Trace.WriteLine()什么区别?
我需要动态地使用不同名称来检测跨度。如何创建具有动态命名的跟踪范围?
use tracing; // 0.1.22
fn main() {
let name: &'static str = "foo bar";
let span = tracing::span!(tracing::Level::TRACE, name);
let span_handle = span.enter();
tracing::info!("Hello, world!");
drop(span_handle);
}
Run Code Online (Sandbox Code Playgroud)
error[E0435]: attempt to use a non-constant value in a constant
--> src/main.rs:5:54
|
5 | let span = tracing::span!(tracing::Level::TRACE, name);
| ^^^^ non-constant value
Run Code Online (Sandbox Code Playgroud)
有一个不稳定的测试,我们不知道根本原因可能是什么。
with pytest.raises(foo.geocoder.GeocodingFailed):
foo.geocoder.geocode('not a valid place')
Run Code Online (Sandbox Code Playgroud)
有时异常不会发生。
我查看了如何处理失败的文档,但这并没有帮助。
如何跟踪geocode()以便如果异常没有发生,我会看到跟踪?
我查看trace了标准库的模块。但是似乎没有简单的方法可以将跟踪作为字符串获取。
“跟踪”我的意思是:在gecode(). 我想查看带有缩进的方法调用和返回语句。我想忽略 Python 标准库中的行。
AFAIK 像 pdb 这样的调试器在这里没有帮助,因为测试仅在 CI 中运行时才会失败,并且每个月只有一次或两次。
我正在使用 Golang 中的 otel 官方 sdk 跟踪包来实现跟踪功能。其存储库的链接位于此处。
虽然拥有, , ...TracerProvider等所有配置,但我们仍然可以从相同的配置中选择不同的配置:ExporterSpanProcessorSamplerTracerTracerProvider
tracerA := otel.GetTracerProvider().Tracer("TracerA")
tracerB := otel.GetTracerProvider().Tracer("TracerB")
Run Code Online (Sandbox Code Playgroud)
由于它们来自同一个 TracerProvider,因此 TracerA 和 TracerB 的行为相同。没有其他设置可以产生影响。下面的示例将生成一条迹线,而不是分开的迹线。
ctx, span := tracerA.Start(context.Background(), "First Span")
ctx, span = tracerB.start(ctx, "Second Span")
// above becomes
|----------------------| // First Span
|-------------| // Second Span
Run Code Online (Sandbox Code Playgroud)
我想知道为什么otel提供这些不同的Tracer实例。无论Tracer使用哪个,结果都是一样的。它有一个用例吗?