Complete guide to using RingBuffer for kernel log monitoring and analysis.
- Getting Started
- Basic Operations
- Filtering and Search
- Event Details
- Export and Saving
- Plugin Usage
- Advanced Features
- Keyboard Shortcuts
- Tips and Best Practices
When you first launch RingBuffer:
- The application initializes the kernel log engine
- Attempts to connect to available log sources (dmesg or journalctl)
- Loads recent kernel logs from the ring buffer (last 100 events)
- Automatically starts live streaming of new kernel events
- Events appear in the main table view with real-time updates
Note: If you see permission errors, refer to the Installation Guide.
Kernel logs contain messages from:
- Kernel core: System initialization, memory management, scheduling
- Device drivers: USB, network, storage, graphics
- Subsystems: Networking, filesystem, security modules
- Hardware events: Device connections, errors, state changes
RingBuffer parses these logs into structured events with severity levels, subsystems, timestamps, and messages.
- Menu Bar: File, Capture, View, Plugins, Settings, Help
- Toolbar: Quick actions for common operations (not implemented in current version)
- Filter Panel (Left): Severity, subsystem, source, and search filters
- Log View (Center): Main table displaying kernel events
- Context Panel (Bottom): Detailed information for selected events
- Status Bar (Bottom): Source information and streaming status
Start Streaming:
- Automatically starts on application launch
- Menu → Capture → Start Live Stream (or
Space) - Streaming polls for new events every 150ms
Pause Streaming:
- Menu → Capture → Pause Stream (or
Ctrl+Space) - Stops polling for new events but keeps existing logs
Resume Streaming:
- Menu → Capture → Resume Stream (or
Ctrl+Shift+Space) - Resumes polling for new events
Note: Pausing only stops new event collection; the kernel continues generating logs.
Clear Kernel Buffer:
- Menu → File → Clear Kernel Buffer (or
Ctrl+Shift+Delete) - Warning: This clears the actual kernel ring buffer, not just the display
- Requires elevated permissions and shows confirmation dialog
Note: This operation requires root privileges and cannot be undone.
Toggle Auto-Scroll:
- Menu → View → Toggle Auto-Scroll (or
Ctrl+A) - When enabled, view automatically scrolls to show newest events
- Default state: enabled
RingBuffer recognizes these kernel severity levels:
| Level | Priority | Description | Color |
|---|---|---|---|
| EMERG | 0 | System is unusable | Red |
| ALERT | 1 | Action must be taken immediately | Red |
| CRIT | 2 | Critical conditions | Red |
| ERR | 3 | Error conditions | Red |
| WARN | 4 | Warning conditions | Yellow |
| NOTICE | 5 | Normal but significant | Blue |
| INFO | 6 | Informational | Blue |
| DEBUG | 7 | Debug-level messages | Green |
To filter by severity:
- Use checkboxes in the left "Severity" panel
- Check = Show, Uncheck = Hide
- Changes apply in real-time to the table view
Example Use Cases:
- Show only errors: Check only ERR, CRIT, ALERT, EMERG
- Hide debug noise: Uncheck DEBUG and INFO
- Critical events only: Check only EMERG and ALERT
Common subsystems detected (configurable list):
- USB: USB device events
- MEMORY: Memory management
- NETWORK: Network interface events
- FILESYSTEM: Filesystem operations
- DRM: Graphics/display
- SECURITY: Security-related events
- AUDIO: Audio device events
- HID: Human interface devices
To filter by subsystem:
- Use checkboxes in the "Subsystem" panel
- Multiple selections = OR logic (show if any match)
- Subsystem matching is case-insensitive
RingBuffer can read from multiple sources:
- dmesg: Kernel ring buffer (default)
- journalctl: systemd journal
To filter by source:
- Use checkboxes in the "Source" panel
- Select which log sources to display
Search for specific text:
- Use the "Search (Regex)" input box in the filter panel
- Enter regex pattern or plain text
- Search is case-insensitive and applies to the message content
- "Clear" button resets the search
Search examples:
USB disconnect # Find USB disconnection events
error.*timeout # Regex: errors with timeout
segfault # Find segmentation faults
oom.*kill # Out of memory events
Combine multiple filters:
- All active filters are combined with AND logic
- Severity + Subsystem: Shows only events matching BOTH criteria
- Text search + Filters: Further narrows results
Filter persistence:
- Filters remain active until manually changed
- No preset saving in current version
Click any event row to see details in the context panel:
- Timestamp (Monotonic): Seconds since system boot (float)
- Timestamp (Realtime): Wall-clock time (ISO format)
- Severity: Log level with color coding
- Subsystem: Component that generated the message
- PID: Process ID (if available from parsing)
- CPU: CPU core number (if mentioned in message)
- Message: Parsed message content
- Raw: Original kernel log line
- Source: Log source (dmesg/journalctl)
- Annotations: Plugin-generated annotations (if any)
Multi-line kernel messages (stack traces, hex dumps) are automatically merged:
[12345.678] kernel: BUG: unable to handle kernel paging request
[12345.678] Code: 8b 45 f4 89 c2 ...
[12345.678] Call Trace:
[12345.678] ? some_function+0x42/0x100
These appear as single expandable events in the table.
Right-click context menu is not implemented in current version.
Export Raw Logs:
- Menu → File → Export Logs (Raw)
- Exports all currently loaded events
- Formats: Text (.txt), CSV (.csv)
Export Filtered Logs:
- Menu → File → Export Logs (Filtered)
- Exports only events matching current filters
- Same format options as raw export
Note: Export functionality is not fully implemented in current version.
Session saving/loading is not implemented in current version.
RingBuffer includes example plugins demonstrating the plugin API:
Purpose: Detect and annotate USB device events
Features:
- Monitors USB subsystem messages
- Annotates device connections: "🔌 USB device connected"
- Annotates disconnections: "❌ USB device disconnected"
- Annotates errors: "
⚠️ USB error detected"
Purpose: Identify out-of-memory killer events
Features:
- Detects OOM killer invocations
- Counts OOM events: "💀 OOM Kill #1"
- Monitors memory pressure warnings: "
⚠️ Memory pressure"
Purpose: Process Kernel Address Sanitizer reports
Features:
- Parses KASAN error reports
- Extracts memory corruption details
- Annotates with severity indicators
Plugin management UI is not implemented in current version.
Loading plugins:
- Plugins are loaded automatically from the plugins/ directory
- Example plugins are included but may need activation
Real-time event streaming:
- Polls kernel sources every 150ms for new events
- Automatically appends new events to the table
- Respects current filters when adding events
- Auto-scrolls to bottom when enabled
Toggle timestamp display:
- Menu → View → Toggle Timestamp Format (or
Ctrl+T) - Switches between monotonic and realtime timestamps in table
Dark theme:
- Applied automatically on startup
- Custom styling for table, panels, and status bar
- Consistent color scheme for severity levels
Check system permissions:
- Menu → Settings → Check Permissions
- Verifies access to dmesg and journalctl
- Shows available log sources
| Shortcut | Action |
|---|---|
Ctrl+Q |
Exit application |
Space |
Start live stream |
Ctrl+Space |
Pause stream |
Ctrl+Shift+Space |
Resume stream |
Ctrl+Shift+Delete |
Clear kernel buffer |
| Shortcut | Action |
|---|---|
Ctrl+T |
Toggle timestamp format |
Ctrl+A |
Toggle auto-scroll |
| Shortcut | Action |
|---|---|
| (Not implemented) | Export raw logs |
| (Not implemented) | Export filtered logs |
For high-volume systems:
- Enable filtering early: Use severity filters to hide DEBUG/INFO
- Monitor resource usage: High event rates may impact UI responsiveness
- Pause when analyzing: Pause streaming to examine events without new data
Finding the root cause:
- Start with ERROR/CRIT only filters
- Note timestamps of first errors
- Expand time range by adjusting filters
- Look for patterns in subsystem and message content
USB debugging:
- Filter by USB subsystem
- Enable USB Watcher plugin for annotations
- Look for connection/disconnection patterns
- Correlate with application errors
Memory issues:
- Enable OOM Detector plugin
- Filter for memory-related subsystems
- Monitor for pressure warnings and OOM kills
Monitor for suspicious activity:
- Set up regex searches for security keywords
- Filter for SECURITY subsystem events
- Look for permission denials and access failures
- Use plugins for automated alerting
While testing drivers:
- Clear kernel buffer before testing
- Monitor specific subsystems related to your driver
- Use regex search for driver-specific messages
- Export logs for documentation
Scenario: USB device keeps disconnecting
Steps:
- Start RingBuffer and enable USB subsystem filter
- Load USB Watcher plugin for annotations
- Reproduce the disconnect issue
- Look for error patterns in USB messages
- Check device enumeration failures
Scenario: System instability or crashes
Steps:
- Launch RingBuffer after boot
- Filter for EMERG/CRIT/ERR severities
- Look for kernel panic messages
- Check for OOM killer events
- Examine stack traces in continuation lines
Scenario: Testing new kernel driver
Steps:
- Clear kernel buffer before loading driver
- Start streaming with relevant subsystem filters
- Load the driver module
- Monitor for initialization messages
- Check for probe failures or errors
Scenario: Investigating network issues
Steps:
- Filter for NETWORK subsystem
- Search for error keywords in messages
- Look for interface state changes
- Monitor for packet drop indicators
Check:
- Streaming status in status bar (should show "Streaming active ✓")
- Permissions: Run
dmesgorjournalctl -kmanually to verify access - Filters: Ensure filters aren't excluding all events
- Source availability: Check Settings → Check Permissions
Solutions:
- Reduce polling frequency (not configurable in UI)
- Enable more restrictive filters
- Pause streaming when not actively monitoring
Causes:
- Streaming is paused (check status bar)
- Auto-scroll disabled (toggle with Ctrl+A)
- Filters excluding new events
- Permission issues with log sources
Solutions:
- Run RingBuffer with elevated privileges:
sudo ringbuffer - Check Settings → Check Permissions for details
- Ensure user is in appropriate groups (usually 'adm' or 'systemd-journal')
Resources:
- Installation Guide - Setup and permissions
- Plugin Development - Extending functionality
- Plugin source code in
plugins/directory - Core engine code in
core/directory
Community:
- Check GitHub repository for issues and updates
- Review example plugins for API usage
- Examine core modules for internal architecture
Happy kernel debugging! 🔍