我正在尝试调试一个用T-SQL UDF编写的相当复杂的公式求值程序(不要问)递归(但通过中间函数间接)调用自己,blah,blah.
当然,我们有一个错误.
现在,使用PRINT语句(然后可以通过实现InfoMessage事件的处理程序从ADO.NET中读取),我可以模拟存储过程的跟踪.
对UDF执行相同操作会产生编译时消息:
Invalid use of side-effecting or time-dependent operator in 'PRINT' within a function.
Run Code Online (Sandbox Code Playgroud)
我得到了消息(PRINT做了一些像重置@@ROWCOUNT这样的东西,在UDF中肯定是禁止的,但我如何追踪通话?我想打印出这条迹线,所以我可以研究它而不会因为踩踏而分心调试器中的调用...
编辑:我曾尝试使用SQL Profiler(这是第一次给我),但我无法弄清楚要追踪的内容:虽然我可以获取跟踪输出发送到数据库的查询,但它们是opaque在某种意义上说我无法向下钻取到被调用的Expression-UDF:我可以跟踪调用的实际存储过程,但是没有列出此过程调用的UDF.我错过了什么吗?我猜不会...
编辑#2:尽管(自动)接受的答案确实跟踪了函数调用 - 非常有用,谢谢 - 它无助于找出传递给函数的参数.当然,这对于调试递归函数至关重要.如果我发现任何溶剂,我会发布...
例如,有一个按钮.它包裹着<div>.
当按下这个按钮时,会发生javascript函数调用,然后是另一个函数,然后通过ajax调用服务器,如果没问题,javascript会将此页面重定向到另一个页面.
调试很难.
有可能"抓住"这个事件吗?即,知道点击按钮后调用了什么函数?按钮没有属性"onclick",即事件监听器在javascript中连接.
如果不可能那么可以追踪吗?那就是看看所有函数调用,之后调用它?
它在视觉方面会更好,虽然在文字方面也很好:)
谢谢你的回复!
我正在尝试学习跟踪的内置功能.我无法弄清楚如何使用配置来设置写入我的监听的级别(信息,警告,错误).
我有默认的app.config.在我的代码中,我使用Trace.TraceInformation()和Trace.TraceError.
所有消息都写入我的文本文件.我希望能够在app.config中更改某些内容,使其记录Info消息或仅记录错误消息.
Module1.vb中
Sub Main(ByVal args() As String)
Dim index As Integer = 0
For Each arg As String In args
Trace.TraceInformation(String.Format("Sub Main(): arg({1}) = {0}", arg, index))
Trace.Flush()
If arg.Split("=").Count = 2 Then
If String.Compare(arg.Split("=")(0), "mode", True) = 0 Then _Mode = arg.Split("=")(1)
End If
index += 1
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
的app.config
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="DefaultSource">
<listeners>
<add name="FileLog"/>
<!-- Uncomment the below section to write to the Application …Run Code Online (Sandbox Code Playgroud) 我试图通过指向文件位置的TextWriterTraceListener跟踪我的Windows窗体应用程序中发生的奇怪事情.我设置它是为了在应用程序第一次需要在程序运行期间跟踪某些内容时,它会创建跟踪侦听器并对其进行注册.
但是,看起来根本没有创建跟踪文件,在C:\ GMS2Trace.log中没有显示任何内容.我已经验证程序已经到达了调用trace方法的部分代码.
我的跟踪代码如下:
internal static void traceWarning(string message)
{
if (!traceEnabled)
{
traceEnabled = true;
Trace.Listeners.Add(new TextWriterTraceListener(@"C:\GMS2Trace.log"));
}
Trace.TraceWarning(getTimeStamp() + " " + message);
}
Run Code Online (Sandbox Code Playgroud)
跟踪文件的位置或其他问题是否存在问题?
我想看一下PHP脚本的WHOLE代码执行日志.这样的事情:http://en.wikibooks.org/wiki/Ruby_Programming/Standard_Library/Tracer(缺乏更好的例子;请不要火焰).
有没有办法如何获取PHP的日志?
注意:我知道我可以使用调试器,但这不一样.
我的VS 2013输出窗口充满了这个:
iisexpress.exe Information: 0 : Request, Method=GET, Url=http://localhost:51741/api/Clients/?$filter=UniqueName eq '6269', Message='http://localhost:51741/api/Clients/?$filter=UniqueName eq '6269''
iisexpress.exe Information: 0 : Message='Clients', Operation=DefaultHttpControllerSelector.SelectController
iisexpress.exe Information: 0 : Message='MyProj.Controllers.ClientsController', Operation=DefaultHttpControllerActivator.Create
iisexpress.exe Information: 0 : Message='MyProj.Controllers.ClientsController', Operation=HttpControllerDescriptor.CreateController
iisexpress.exe Information: 0 : Message='Selected action 'GetClients()'', Operation=ApiControllerActionSelector.SelectAction
iisexpress.exe Information: 0 : Operation=HttpActionBinding.ExecuteBindingAsync
iisexpress.exe Information: 0 : Operation=QueryableAttribute.ActionExecuting
iisexpress.exe Information: 0 : Message='Action returned 'System.Collections.Generic.List`1[MyProj.Models.ClientDto]'', Operation=ReflectedHttpActionDescriptor.ExecuteAsync
iisexpress.exe Information: 0 : Message='Will use same 'JsonMediaTypeFormatter' formatter', Operation=JsonMediaTypeFormatter.GetPerRequestFormatterInstance
iisexpress.exe Information: 0 : Message='Selected formatter='JsonMediaTypeFormatter', content-type='application/json; charset=utf-8'', Operation=DefaultContentNegotiator.Negotiate
iisexpress.exe Information: 0 …Run Code Online (Sandbox Code Playgroud) 有没有一种最简单的方法来启用 linux 内核驱动程序dev_dbg调试消息(实际上它是一个trace样式消息),希望不会弄乱内核补丁/重新编译或驱动程序实现一些额外的东西debugfs?也许有一种方法可以在内核中启用一些简单的东西(比如一个标志?)触发特定驱动程序或所有驱动程序 dev_dbg(它可以用 `dmesg|grep "driverName" 过滤)输出?
内核版本是4.14. 根本没有syslog/daemonlog/system运行日志。没有网络接口,只有一个串口可用。目标系统非常慢而且非常紧凑,所以没有办法添加 syslog/etc,除了 dmesg 什么都没有,在那里看到这样的行的输出会很好:
dev_dbg(&client->dev, "bla bla bla\n");
不幸的是,一些帖子已经建议debug为bootargs内核参数添加关键字还不够。
输出像dev_info进入 dmesg 没有问题,所以它绝对接近。谢谢
我一直在试图让一个问题的底部,结合我的组合框的的SelectedItem既然我已经不是成功thusfar我开始寻找方法,以获得更详细的设置调试信息PresentationTraceSources.TraceLevel =高特定绑定.不幸的是,在这样做之后,我在"调试"类别下的"输出"窗口中看不到任何相关项.
我正在使用Visual Studio 2010,我的项目是一个WinForms项目,大量使用interop使用ElementHost来托管WPF内容.目前正在为.NET 3.5构建所有相关项目.任何可能导致我在输出窗口中看到额外跟踪信息的解决方案的想法或建议将不胜感激.
下面是我正在使用的代码片段.
<ComboBox xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase"
SelectedItem="{Binding Path=MyCollection.SelectedItem, Mode=TwoWay, diagnostics:PresentationTraceSources.TraceLevel=High}"
ItemsSource="{Binding MyCollection, diagnostics:PresentationTraceSources.TraceLevel=High}"
SelectedValuePath="Value"
DisplayMemberPath="Value.DisplayName" />
Run Code Online (Sandbox Code Playgroud) 如何使ASP.NET MVC跟踪信息与页面内跟踪输出一致为trace.axd?我可能只是遗漏了一些明显的东西,如果你看到它,请把它叫出来.
回到常规的ASP.NET时代,您只需将以下内容添加到web.config:
<system.diagnostics>
<trace>
<listeners>
<add name="WebPageTraceListener" type="System.Web.WebPageTraceListener, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</listeners>
</trace>
</system.diagnostics>
...
<system.web>
<trace enabled="true" pageOutput="true" writeToDiagnosticsTrace="true"/>
...
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="1" compilerOptions="/d:TRACE" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
Run Code Online (Sandbox Code Playgroud)
然后,您可以在页面中添加以下内容:
HttpContext.Current.Trace.Write("Write Trace Here");
or
System.Diagnostics.Trace.Write("Write Trace Here");
Run Code Online (Sandbox Code Playgroud)
如果你点击你的页面(即localhost:61115/Default.aspx),你会得到一个很好的跟踪表,其中你的自定义跟踪嵌入了asp.net页面事件:
aspx.page Begin Load 0.00343 0.000357
test 0.00462176 0.001192
aspx.page End Load 0.00526904 0.000018
Run Code Online (Sandbox Code Playgroud)
命中localhost:61115/Trace.axd?id = 0将保留与页内跟踪输出相同的跟踪结果.
不幸的是,由于我不知道的原因,我无法在ASP.NET MVC 2.0中使用它.我使用类似于上面列出的web.config设置.有趣的是,我只能获得部分工作的痕迹.因此,如果我点击功能等效的默认页面(也就是我的homecontroller的索引操作方法),我会看到所有传统的asp.net页面事件,例如preinit,preload,prerender等,但是没有使用System.Diagnostics也没有自定义跟踪消息. HttpContext.Trace.Write.
但是,如果我转向Trace.axd?id = 0文件,我会收到我的自定义跟踪消息,但没有ASP.NET页面事件跟踪输出.我必须在这里遗漏一些导致我在页面与trace.axd中看到的跟踪信息不一致的事情(回想一下传统的asp.net输出相同的页内与trace.axd输出).我真的希望我的页内跟踪信息与trace.axd一致(通过删除传统的asp.net页面事件或其他方式).有什么我想念的吗?
我想动态地构建调用图,从任意方法调用开始,或者从运行的JVM本身中使用新线程开始构建调用图.(这个软件将成为负载测试另一个消耗调用图的软件的测试工具)
我知道有一些SPI接口,但看起来你需要用它们运行-javaagent标志.我想直接在VM本身访问它.
理想情况下,我想获得每个方法调用的入口和出口的回调,该方法调用的参数以及该方法中的时间.显然在单个线程内.
我知道AOP可能会这样做,但我只是想知道JDK中是否有工具可以让我捕获它.
trace ×10
debugging ×3
.net ×2
asp.net-mvc ×1
c# ×1
callstack ×1
data-binding ×1
driver ×1
events ×1
iis-express ×1
java ×1
javascript ×1
kernel ×1
linux ×1
logging ×1
php ×1
t-sql ×1
wpf ×1