-
Notifications
You must be signed in to change notification settings - Fork 1
Tool compiler diagnostics README
Build:
cmake --preset linux-ninja-release && cmake --build --preset linux-ninja-release
A comprehensive suite of tools for analyzing, tracking, and resolving cross-compiler and linker errors in ThemisDB.
These tools help systematically debug compilation issues across multiple platforms (Windows/MSVC, Linux/GCC, Linux/Clang, macOS, ARM) by:
- Parsing compiler error logs and categorizing errors
- Auditing source code for common cross-compiler issues
- Validating symbol visibility in compiled binaries
- Tracking error trends over time in CI/CD
- Generating actionable reports and recommendations
Parses compiler error logs and categorizes errors into actionable groups.
Features:
- Supports MSVC, GCC, and Clang error formats
- Auto-detects compiler and platform
- Categorizes errors (symbol visibility, linker, templates, intrinsics, etc.)
- Stores results in SQLite database
- Exports to JSON
Usage:
# Parse a build log
python tools/compiler_diagnostics/diagnostic_scanner.py build.log
# Specify compiler and platform
python tools/compiler_diagnostics/diagnostic_scanner.py build.log \
--compiler msvc \
--platform windows \
--output errors.db
# Export to JSON
python tools/compiler_diagnostics/diagnostic_scanner.py build.log \
--json errors.jsonOutput:
Found 245 errors/warnings in build.log
=== Error Statistics ===
By Category:
LINKER: 89
SYMBOL_VISIBILITY: 45
TEMPLATE: 32
INTRINSICS: 18
WARNING: 61
By Platform:
windows: 245
Top Problematic Files:
src/llm/lora_framework.cpp: 23
src/storage/rocksdb_wrapper.cpp: 18
...
Scans source code for common cross-compiler issues.
Features:
- Checks for missing export macros on public APIs
- Detects platform-specific code without guards
- Finds compiler intrinsics without fallbacks
- Identifies template instantiation issues
- Generates detailed reports with suggestions
Usage:
# Audit entire codebase
python tools/compiler_diagnostics/source_audit.py \
--root . \
--output docs/SOURCE_AUDIT_REPORT.md
# Audit specific files
python tools/compiler_diagnostics/source_audit.py \
--root . \
--include src/storage/*.cpp \
--json audit.jsonOutput:
Auditing 1523 source files...
Progress: 100/1523
Progress: 200/1523
...
Audit complete. Found 342 issues.
Report written to docs/SOURCE_AUDIT_REPORT.md
Validates symbol visibility in compiled binaries.
Features:
- Uses
nm(Unix) ordumpbin(Windows) - Checks exported symbols
- Verifies expected exports
- Generates symbol reports
Usage:
# Check symbols in a binary
python tools/compiler_diagnostics/symbol_checker.py \
build/libthemis_base.so \
--output symbols.md
# Verify expected exports
python tools/compiler_diagnostics/symbol_checker.py \
build/libthemis_base.so \
--verify expected_exports.txtOutput:
=== Export Verification ===
Total exported: 1247
Expected: 1250
Missing 3 exports:
- DatabaseConfig::getAdvancedOption
- QueryExecutor::optimize
- StorageEngine::checkpoint
β
Most symbols are correctly exported
Tracks compiler errors from CI runs over time.
Features:
- Tracks errors from CI builds
- Generates weekly reports
- Shows error trends
- Can integrate with GitHub Issues API
Usage:
# Track a CI run
python tools/compiler_diagnostics/issue_tracker.py track \
--ci-log build.log \
--build-id "2024-01-25-001" \
--compiler gcc \
--platform linux
# Generate weekly report
python tools/compiler_diagnostics/issue_tracker.py report \
--output docs/WEEKLY_ERROR_REPORT.md
# Show trends
python tools/compiler_diagnostics/issue_tracker.py trends --days 30The tools are integrated into CI workflows:
- ci-windows-full.yml: Full Windows build with error tracking
- ci-linux-full.yml: Linux builds (GCC + Clang) with error tracking
- ci-arm-cross.yml: ARM cross-compilation with error tracking
- ci-sanitizers.yml: Sanitizer coverage (ASan, UBSan, TSan, MSan)
- Build fails β Error logs captured
- diagnostic_scanner.py β Parses logs, categorizes errors
- issue_tracker.py β Tracks in database
- Report generation β Creates summary
- PR comment β Posts results (if PR)
- Artifact upload β Stores logs and databases
- name: Parse Compiler Errors
if: always()
run: |
python tools/compiler_diagnostics/diagnostic_scanner.py \
build.log \
--output errors.db \
--compiler gcc \
--platform linux
- name: Track Errors
if: always()
run: |
python tools/compiler_diagnostics/issue_tracker.py track \
--ci-log build.log \
--build-id "${{ github.run_id }}"
- name: Upload Error Database
uses: actions/upload-artifact@v3
with:
name: error-database
path: errors.db| Category | Description | Priority |
|---|---|---|
| SYMBOL_VISIBILITY | Missing/incorrect export macros | High |
| LINKER | Undefined references, link order | High |
| TEMPLATE | Template instantiation issues | High |
| INTRINSICS | Compiler intrinsics without fallbacks | Medium |
| ABI | Calling convention, mangling issues | Medium |
| PLATFORM_SPECIFIC | OS-specific code without guards | Medium |
| STANDARD_LIBRARY | STL compatibility issues | Low |
| WARNING | Compiler warnings | Low |
The SQLite database stores errors with this schema:
CREATE TABLE errors (
id INTEGER PRIMARY KEY,
file_path TEXT,
line_number INTEGER,
column_number INTEGER,
severity TEXT,
message TEXT,
category TEXT,
compiler TEXT,
platform TEXT,
full_context TEXT,
timestamp TEXT,
resolved BOOLEAN DEFAULT 0
);# Connect to database
sqlite3 tools/compiler_diagnostics/compiler_diagnostics.db
# Count errors by category
SELECT category, COUNT(*) as count
FROM errors
GROUP BY category
ORDER BY count DESC;
# Find errors in specific file
SELECT * FROM errors
WHERE file_path LIKE '%lora_framework.cpp%';
# Get recent unresolved errors
SELECT * FROM errors
WHERE resolved = 0
ORDER BY timestamp DESC
LIMIT 10;Add to .git/hooks/pre-commit:
#!/bin/bash
# Run source audit
python tools/compiler_diagnostics/source_audit.py \
--root . \
--output /tmp/audit.md
# Check for high-priority issues
if grep -q "severity: high" /tmp/audit.md; then
echo "ERROR: High-priority issues found"
grep "severity: high" /tmp/audit.md
exit 1
fi
echo "β
Source audit passed"
exit 0Location: docs/SOURCE_AUDIT_REPORT.md
Contains:
- Summary statistics
- Issues grouped by severity
- Issues grouped by type
- Top problematic files
- Specific line numbers and suggestions
Location: docs/WEEKLY_ERROR_REPORT.md
Contains:
- Error count trends
- Errors by category
- Errors by platform
- Top problematic files
- Recommendations
Location: docs/PLATFORM_COMPATIBILITY_MATRIX.md
Contains:
- Per-file compilation status across platforms
- Known platform-specific issues
- Testing instructions
-
Before committing:
python tools/compiler_diagnostics/source_audit.py --root . -
After build failure:
python tools/compiler_diagnostics/diagnostic_scanner.py build.log
-
Check specific file:
python tools/compiler_diagnostics/source_audit.py \ --include src/myfile.cpp
- Monitor error trends
- Review weekly reports
- Update platform compatibility matrix
- Track unresolved errors
- Platform Compatibility Matrix
- Compiler Troubleshooting Guide
- Contributing Platform Guidelines
- Windows Build Errors
- Linux Build Errors
- ARM Build Errors
Add detection logic to diagnostic_scanner.py:
def detect_compiler(self, log_content: str) -> str:
if "my-compiler" in log_content:
return "my-compiler"
# ...Adjust patterns in source_audit.py or add file exclusions:
# Skip certain directories
if any(x in str(file_path) for x in ['test', 'vendor', 'third_party']):
return []Close all connections:
db.close()Or use WAL mode:
cursor.execute("PRAGMA journal_mode=WAL")See the examples/ directory for:
- Parsing different compiler formats
- Custom error categorization
- Generating custom reports
- Integration with other tools
Same as ThemisDB project.
When improving these tools:
- Add tests for new error patterns
- Update documentation
- Test on multiple platforms
- Consider backward compatibility
ThemisDB 1.9.0-beta Β· Home Β· Module-Index Β· GitHub Β· Issues
ThemisDB 1.9.0-beta Β· Home Β· Wiki-Index Β· Module-Index Β· FAQ Β· Quick-Reference Β· GitHub Β· Issues Β· Discussions Β· License
- Batch Operations
- Best Practices
- CRUD Tutorial
- Custom Document Ingestion
- Getting Started Tutorial
- Interactive Examples
- Schema Design
- Video Tutorials
- AQL Reference
- AQL Examples
- AQL Overview
- AQL Feature Roadmap
- AQL Geospatial Guide
- AQL LLM Migration Guide
- AQL API
- AQL Grammar (EBNF)
- AQL Root Overview
- AQL Examples (root)
- API Reference
- API Module README
- OpenAPI Overview
- Client SDK Overview
- SDK Overview
- Operations
- Operations Overview
- Operations Runbook
- Operations Handbook
- ThemisCtl Admin Guide
- Pipeline E2E SOPs
- Deploy Overview
- Docker Overview
- Docker Hub README
- Helm Overview
- Packaging Overview
- Operator Overview
- Security Policy
- Production Hardening Checklist
- Security Hardening Guide
- Encryption Key Management
- Access Control Framework
- Zero Trust Policy
- API Authentication & Authorization
- HSM Production Setup
- PKCS11 Integration
- DSGVO / SOC2 Checklist
- Access Model Runbooks
- Access Model Dashboard
- Maturity Automation Runbook
- Access Review Automation
- Access Model Dashboard
- Access Model Runbooks
- Rights Revocation
- Dr Checklists
- Dr Testing
- Incident Response Playbook
- Incident Response Testing
- GPU Oom Recovery
- Grammar Debugging
- Metrics Scrape Troubleshooting
- Model Swap Procedure
- Quota Tuning
- Subagent Deployment
- Logging Configuration
- Content Model
- Crypto & Keys
- Feature Flags Reference
- Modular Architecture Roadmap
- Modularization Guide
- Module Architecture Index
- PostgreSQL Wire Protocol
- Query Scheduling
- Raft Consensus Design
- Resource Pooling
- Source Directory Guide
- Unified Access Model
- E1 001 Layered Retrieval Design
- E1 002 Ann Abstraction Strategy
- E1 003 Tensor Summary Types
- E1 004 Lora Package Distinction
- E1 005 Model Switch Compatibility
- E1 006 Federated Tensor Summaries
- E2 001 Evaluation Framework Design
- E2 002 Hardware Profile Strategy
- E2 003 Query Planner Routing Model
- E2 004 Approximation Governance Rules
- E2 005 Cross Layer Fallback Confidence Policy
- E3 001 Distributed Tensor Design
- E3 002 Manifest Coordination Strategy
- E3 003 Recovery And Erasure Choice
- E3 004 Tensor Fabric Infrastructure
- Contributing
- Contributing (root)
- Code of Conduct
- Support
- Maintainers
- CTest Guide
- Build Quick Reference
- Developer Wiki Index
- Build / Test / CI
- Module Index
- Branching Strategy
- Disabled Stub Policy
- Docs PR Policy
- GA Promotion Sign Off
- Github Milestones Setup
- Maturity Claim Verification Checklist
- Maturity Evidence Registry
- Merge Gate Bot Config
- Merge Gate Status Live
- Phase 1 Closure Report
- Phase Closure Policy
- Phase Dependency Graph
- Phase3 Enforcement Runbook
- Plugin Submodule Rollback
- PR Version Targeting
- PR Version Targeting Backfill
- Production Ready 2026 Delivery Plan
- Query Module Status
- Readme
- Release Promotion Gate Policy
- Release Validation Checklist
- Security Module 5671 Evidence Summary
- Sharding P6 Residual Risk Acceptance
- Sourcecode Compliance Governance
- Updates Development Status Sign Off
- Wave C Implementation Complete
- Blob Storage
- Cuda
- Ethics Ai
- Exporters
- Huggingface
- Image Analysis
- Importers
- RPC
- Scraper
- Themisdb Ai Watermark Detector
- User Storage Encrypted
- Chimera Architecture
- Chimera Future
- Chimera Readme
- Chimera Roadmap
- Covina Fastapi Ingestion Architecture
- Covina Fastapi Ingestion Future
- Covina Fastapi Ingestion Roadmap
- Vcc Base Architecture
- Vcc Base Future
- Vcc Base Roadmap
- Vcc Clara Ingestion Architecture
- Vcc Clara Ingestion Future
- Vcc Clara Ingestion Roadmap
- Vcc Veritas Architecture
- Vcc Veritas Future
- Vcc Veritas Roadmap
- 01 Hello World
- 02 Todo App
- 03 Contact Manager
- 04 Inventory System
- 05 Time Series Monitor
- 06 Graph Social Network
- 07 Vector Search Documents
- 08 Dms Erp System
- 09 Iot Sensor Network
- 10 Drone Image Analysis
- 11 Blog Wiki
- 12 Expense Tracker
- 13 Recipe Manager
- 14 Ecommerce Catalog
- 15 Event Management
- 16 Kanban Board
- 17 Crm
- 18 Realtime Chat
- 19 Recommendation Engine
- 20 Smart Home
- 21 Coding Platform
- 22 AQL Diagram Tool
- 23 Traveling Salesman
- 24 Moral Philosophy Debates
- API Versioning
- Distributed Sharding
- Feedback Plugins
- Geo
- Gnn
- Image Analysis
- Legal Lora Training
- LLM
- Lora Sync
- Migration
- Nlp
- Performance
- Railway
- Replication
- Rope Visualization
- Sample Product Config
- Security
- Client SDK Overview
- Quickstart
- Sdk Enhancements
- Sdk Implementation Summary
- Test Suite Readme
- Go
- Java
- Javascript
- Php
- Python
- Ruby
- Rust
- Typescript
- 01 Grundlegende Operationen
- 02 AQL Queries
- 03 Graph Daten
- 04 Multimodell Anwendung
- 01 Quickstart Guide
- 02 AQL Referenz Kurzuebersicht
- 03 Datenmodellierung Guide
- 04 Uebungsaufgaben
- 05 Best Practices Guide
- Training Documents
- Training Overview
- 01 Einfuehrung Und Uebersicht
- 02 Datenmodelle Und Architektur
- 03 AQL Abfragesprache
- 04 Installation Und Setup
- 05 Anwendungsbeispiele
- Training Presentations
- Dependencies Readme
- Processmonitor Readme
- Themis.admintools.shared Readme
- Themis.aqlquerybuilder Readme
- Themis.aqlquerybuilder Roadmap
- Themis.auditlogviewer Readme
- Themis.auditlogviewer Roadmap
- Themis.classificationdashboard Readme
- Themis.classificationdashboard Roadmap
- Themis.compliancereports Readme
- Themis.compliancereports Roadmap
- Themis.gisviewer.controlpanel Readme
- Themis.gisviewer.controlpanel Roadmap
- Themis.impactanalysisviewer Readme
- Themis.impactanalysisviewer Roadmap
- Themis.ingestiontool Readme
- Themis.ingestiontool Roadmap
- Themis.keyrotationdashboard Readme
- Themis.keyrotationdashboard Roadmap
- Themis.piimanager Readme
- Themis.piimanager Roadmap
- Themis.retentionmanager Readme
- Themis.retentionmanager Roadmap
- Themis.sagaverifier Readme
- Themis.sagaverifier Roadmap
- Themis.usbadmintool Readme
- Themis.usbadmintool Roadmap
- CI Readme
- CI Roadmap
- Compiler Diagnostics Readme
- Compiler Diagnostics Roadmap
- Completion Readme
- Copilot Ollama Router Readme
- Copilot Ollama Router Roadmap
- Gnn Readme
- Gnn Roadmap
- Rope Visualizer Readme
- Rope Visualizer Roadmap
- Tco Calculator Readme
- Tco Calculator Roadmap
- Tests Readme
- Tests Roadmap
- Themis Config Wx Readme
- Themis Docs Builder Readme
- Wikipedia Ingestion Readme