cobaltfusion / debugviewpp Goto Github PK
View Code? Open in Web Editor NEWDebugView++, collects, views, filters your application logs, and highlights information that is important to you!
License: Boost Software License 1.0
DebugView++, collects, views, filters your application logs, and highlights information that is important to you!
License: Boost Software License 1.0
When multiple tabs are open, it is useful to see if new information is available in a tab without having to periodically check all tabs
Can we have a context menu for the listview headers to show/hide colomns?
Just an idea, might be useful to someone :-)
Bind F3 key to the find-next function
Also bind shift-F3 to the find-previous function
Less resources would required if we compress messages using for example Google snappy https://code.google.com/p/snappy/
A fast and easy way to handle this is to use a fixed lines-size block buffer.
This way compression/decompression is clustered in a way that it is only needed when blocksize is reached to both reads and writes.
pseudo code:
create a vector writeBuffer
and when writeBuffer.size() == blocksize compress the writeBuffer and store it in vector< buffer* > mBlocks
see https://code.google.com/p/buggazer/source/browse/source/BugGazer/Storage/SnappyBlocks.cs
specifically, the method string GetText(int stringId)
This type of filter would prevent lines from auto-scrolling your view, so the view scrolls down only if relevant new information is comes in.
Useful if you want debugview++ to keep keep in the background.
Do not make this default :)
This could be done by logging the threadID in the message, for example:
Foo::doFoo(1, 2, 3) enter (tid: 1234)
dummy message (tid: 555)
dummy message (tid: 555)
Foo::doBar(1, 2) enter (tid: 1234)
dummy message (tid: 666)
dummy message (tid: 666)
Foo::doBar(1, 2) leave -> 4 (tid: 1234)
Foo::doBar(1, 2) leave (tid: 1234)
It would be useful to follow the code-flow if the lines from the same TID could have the same color or where indented at the same level:
Foo::doFoo(1, 2, 3) enter (tid: 1234)
dummy message (tid: 555)
dummy message (tid: 555)
Foo::doBar(1, 2) enter (tid: 1234)
dummy message (tid: 666)
dummy message (tid: 666)
Foo::doBar(1, 2) leave -> 4 (tid: 1234)
Foo::doBar(1, 2) leave (tid: 1234)
Using a WaitForMultipleObjects for all logsources we could do this, mostly already implemented.
Filter 'devenv.exe' message, empty lines,
Info: AfxDllCanUnloadNow returning S_OK
Feature to stream the logging directly to a file, that can then be monitored remotely using any kind of sharing mechanism, specifically, a program like WinTail (http://tailforwin32.sourceforge.net/ ) should be able to monitor the file. That means a second process should be able to read the file while debugview++ is writing to it.
Open an existing file to do post-mortom filtering
Maybe we should keep a cache of process handles of all running processes to be able to resolve these?
a matching filter of this type would start a custom action, like a messageBeep or an executable with the pid+msg as parameters.
Allow to select a piece a message bigger then just a word
Filter that when matched stops the auto-scroll feature.
Example: stop on "Shutting down the rootbrickbox" or the first line that contains the work 'exception'
it is also useful to select (part of) the process name, pid or timestamp.
The pause behavior is non-functional for the global-reader
Allow the token highlighting to change to font to bold
Pressing CTRL- (0-9) will bookmark the selected line.
Pressing (0-9) will jump back to the bookmarked line.
These keyboard keys (0-9) conflicts with the SAIT search-as-I-type feature, so CTRL (0-9) could be used instead.
Debugview++ now monitors the DBWinMutex to receive the Outputdebugstring messages. See http://www.unixwiz.net/techtips/outputdebugstring.html for an explanation to this mechanism. When a debugging tool (like visual studio) is attached to the process Debugview++ will nolonger receive any messages.
Also a second client (let's say BugGazer https://code.google.com/p/buggazer/ ) would contest for the DBWinMutex and both clients end up receiving only some of the messages.
This could be resolved by API hooking into the Kernel32 OutputDebugStringA method, also this would allow us to call the original API as well, so DBWinMutex based clients would also receive the messages.
pressing 'smart find-next (F4?) after selecting a highlighted line jumps to the next line with the same highlighting.
Move the next highlighted item would be useful, then a 'exceptions' TAB can be made to highlighting only 'exceptions'. If you switch to this tab and press a key the next (or last available) hightlighted item (exception) is shown
The string position matching doesn't always use the tabified text.
If a keyword is found, and later the same keyword appears again, make it underlined and clickable to jump the previous appearance of the keyword.
Different application / implementation:
Find a logged memory address:
0001 Allocated object 'foo' 0x12341234 at Foo::CreateObject (Foo.cpp:24)
.....
1000 Memory leaks detected:
1001 block of 24 bytes at 0x12341234
Hovering the mouse above the second occurrence (and now highlighted) of 0x12341234 would should show the first message at (1) in a tooltip
Filter that selects and centers the found item each time it is found, allowing you to continuously monitor an item in its context.
example:
test;123;bla;foo;bar
log this in separate colomns.
1 [ Exclude this process ]
2 [ Exclude processname ]
Option 1:
This should add a filter to exclude the process by its handle so when a new process is started with the same name, or the PID of the current process is re-used its output is not filtered.
Option 2:
This should add a filter to exclude the process that produced the line by its full executable name.
DebugView does not close on Windows 7
if UpdateColumnWidths(); in CLogView::SaveSettings is enabled (uncommented)
If have tested this on my workstation at FEI and reproduced the behavior on a local laptop that hosts Windows 7.
Could be useful to mark the beginning of a new test-attempt, when you want to keep the older logging for reference
Clear-output string: When DebugView sees the special debug output string "DBGVIEWCLEAR" it clears the output.
While you type you cannot see any difference between a type and a good keyword where the result is not found.
Maybe we could show in de statusbar:
'term' not found....
'term' found at line xxx
/m minimized
/L [,]
/M
A circular buffer would reduce dynamic memory allocation and prevent the need to merge logsources
GetTextColor and GetHighlights are now executed for each incoming line, this should only be done (and cached) per view
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.