File tree Expand file tree Collapse file tree 2 files changed +36
-0
lines changed Expand file tree Collapse file tree 2 files changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -64,6 +64,39 @@ The project includes both Java and C++ unit tests. You can run them using:
64
64
### Cross-JDK Testing
65
65
` JAVA_TEST_HOME=<path to test JDK> ./gradlew testDebug `
66
66
67
+ ## Release Builds and Debug Information
68
+
69
+ ### Split Debug Information
70
+ Release builds automatically generate split debug information to optimize deployment size while preserving debugging capabilities:
71
+
72
+ - ** Stripped libraries** (~ 1.2MB): Production-ready binaries with symbols removed for deployment
73
+ - ** Debug symbol files** (~ 6.1MB): Separate ` .debug ` files containing full debugging information
74
+ - ** Debug links** : Stripped libraries include ` .gnu_debuglink ` sections pointing to debug files
75
+
76
+ ### Build Artifacts Structure
77
+ ```
78
+ ddprof-lib/build/
79
+ ├── lib/main/release/linux/x64/
80
+ │ ├── libjavaProfiler.so # Original library with debug symbols
81
+ │ ├── stripped/
82
+ │ │ └── libjavaProfiler.so # Stripped library (83% smaller)
83
+ │ └── debug/
84
+ │ └── libjavaProfiler.so.debug # Debug symbols only
85
+ ├── native/release/
86
+ │ └── META-INF/native-libs/linux-x64/
87
+ │ └── libjavaProfiler.so # Final stripped library (deployed)
88
+ └── native/release-debug/
89
+ └── META-INF/native-libs/linux-x64/
90
+ └── libjavaProfiler.so.debug # Debug symbols package
91
+ ```
92
+
93
+ ### Build Options
94
+ - ** Skip debug extraction** : ` ./gradlew buildRelease -Pskip-debug-extraction=true `
95
+ - ** Debug extraction requires** : ` objcopy ` (Linux) or ` dsymutil ` (macOS)
96
+ - Ubuntu/Debian: ` sudo apt-get install binutils `
97
+ - Alpine: ` apk add binutils `
98
+ - macOS: Included with Xcode command line tools
99
+
67
100
## Development
68
101
69
102
### Code Quality
Original file line number Diff line number Diff line change @@ -176,6 +176,9 @@ def setupDebugExtraction(config, linkTask) {
176
176
if (copyTask != null ) {
177
177
copyTask. dependsOn stripTask
178
178
copyTask. inputs. files stripTask. get(). outputs. files
179
+
180
+ // Create an extra folder for the debug symbols
181
+ copyTask. dependsOn copyDebugTask
179
182
}
180
183
}
181
184
}
You can’t perform that action at this time.
0 commit comments