Crash report¶
In case of a firmware crash, OAK cameras will automatically generate a crash report and store it in the device. The crash report contains information about the crash, such as the stack trace, the device’s configuration, and the device’s state at the time of the crash. The crash report can be read from the device and sent to Luxonis for debugging purposes.
Demo¶
In case a crash report was found on the device, this example will read it and save it to a json file:
> python crash_report.py
Crash dump found on your device!
Saved to crashDump_0_184430102163DB0F00_3575b77f20e796b4e79953bf3d2ba22f0416ee8b.json
Please report to developers!
Please send the crash reports together with an MRE (DepthAI issue) to our Discuss Forum. Thank you!
Setup¶
Please run the install script to download all required dependencies. Please note that this script must be ran from git context, so you have to download the depthai-python repository first and then run the script
git clone https://github.com/luxonis/depthai-python.git
cd depthai-python/examples
python3 install_requirements.py
For additional information, please follow installation guide
Source code¶
Also available on GitHub
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #!/usr/bin/env python3
import cv2
import depthai as dai
from json import dump
from os.path import exists
# Connect to device and start pipeline
with dai.Device() as device:
if device.hasCrashDump():
crashDump = device.getCrashDump()
commitHash = crashDump.depthaiCommitHash
deviceId = crashDump.deviceId
json = crashDump.serializeToJson()
i = -1
while True:
i += 1
destPath = "crashDump_" + str(i) + "_" + deviceId + "_" + commitHash + ".json"
if exists(destPath):
continue
with open(destPath, 'w', encoding='utf-8') as f:
dump(json, f, ensure_ascii=False, indent=4)
print("Crash dump found on your device!")
print(f"Saved to {destPath}")
print("Please report to developers!")
break
else:
print("There was no crash dump found on your device!")
|
Also available on GitHub
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <fstream>
#include <iostream>
// Includes common necessary includes for development using depthai library
#include "depthai/depthai.hpp"
static bool fileExists(dai::Path path) {
std::ifstream file(path);
return file.is_open();
}
int main() {
using namespace std;
// Connect to device and start pipeline
dai::Device device;
if(device.hasCrashDump()) {
auto crashDump = device.getCrashDump();
std::string commitHash = crashDump.depthaiCommitHash;
std::string deviceId = crashDump.deviceId;
auto json = crashDump.serializeToJson();
for(int i = 0;; i++) {
dai::Path destPath = "crashDump_" + to_string(i) + "_" + deviceId + "_" + commitHash + ".json";
if(fileExists(destPath)) continue;
std::ofstream ob(destPath);
ob << std::setw(4) << json << std::endl;
std::cout << "Crash dump found on your device!" << std::endl;
std::cout << "Saved to " << destPath.string() << std::endl;
std::cout << "Please report to developers!" << std::endl;
break;
}
} else {
std::cout << "There was no crash dump found on your device!" << std::endl;
}
return 0;
}
|