I’m thrilled to introduce DebugSwift, a powerful toolkit designed to elevate your Swift-based application debugging experience. 🛠️
Let’s revolutionize Swift debugging together! 🚀 Feel free to explore DebugSwift and share your feedback.
DebugSwift is a comprehensive toolkit designed to simplify and enhance the debugging process for Swift-based applications. Whether you’re troubleshooting issues or optimizing performance, DebugSwift provides a set of powerful features to make your debugging experience more efficient.
Network Logs
- All Response/Request Logs: Capture and review detailed logs of all network requests and responses.
Performance
- CPU, Memory, FPS: Monitor and analyze CPU usage, memory consumption, and frames per second in real-time.
Interface
- Grid: Overlay a grid on the interface to assist with layout alignment.
- Slow Animations: Slow down animations for better visualization and debugging.
- Showing Touches: Highlight touch events for easier interaction tracking.
- Colorized View with Borders: Apply colorization and borders to views for improved visibility.
Resources
- Keychain: Inspect and manage data stored in the keychain.
- User Defaults: View and modify user defaults for testing different application states.
- Files: Access and analyze files stored by the application.
App Settings
- Crash Reports: Access detailed crash reports for analysis and debugging.
- Change Location: Simulate different locations for testing location-based features.
- Console: Monitor and interact with the application’s console logs.
- Version: View the current application version.
- Build: Identify the application’s build number.
- Bundle Name: Retrieve the application’s bundle name.
- Bundle ID: Display the unique bundle identifier for the application.
- Device Infos: Access information about the device running the application.
- Custom Info: Add custom information for quick access during debugging.
- Custom Actions: Add actions information for quick access during debugging.
- Custom View Controller: Add your owns UIViewControllers for access during debugging.
Getting Started
CocoaPods
Add the following line to your Podfile:
pod 'DebugSwift', :git => 'https://github.com/DebugSwift/DebugSwift.git', :branch => 'main'
Then, run:
pod install
Swift Package Manager (SPM)
Add the following dependency to your Package.swift file:
.package(url: "https://github.com/DebugSwift/DebugSwift.git", from: "main")
Then, add DebugSwift to your target’s dependencies.
Usage
func application(
_: UIApplication,
didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
DebugSwift.setup()
DebugSwift.show()
return true
}
Show or hide with shake.
extension UIWindow {
open override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
super.motionEnded(motion, with: event)
if motion == .motionShake {
DebugSwift.toggle()
}
}
}
Customization
Network Configuration
If you want to ignore specific URLs, use the following code:
DebugSwift.Network.ignoredURLs = [“https://reqres.in/api/users/23"]
If you want to capture only a specific URL, use the following code:
DebugSwift.Network.onlyURLs = [“https://reqres.in/api/users/23"]
Adjust the URLs in the arrays according to your needs.
App Custom Data
Usage
DebugSwift.App.customInfo = {
[
.init(
title: “Info 1”,
infos: [
.init(title: “title 1”, subtitle: “title 2”)
]
)
]
}
Results
App Custom Action
Usage
DebugSwift.App.customAction = {
[
.init(
title: “Action 1”,
actions: [
.init(title: “action 1”) { [weak self] in // Important if use self
print(“Action 1”)
}
]
)
]
}
Results
App Custom ViewControllers in Tab Bar
DebugSwift.App.customControllers = {
let controller1 = UITableViewController()
controller1.title = "Custom TableVC 1"
let controller2 = UITableViewController()
controller2.title = "Custom TableVC 2"
return [controller1, controller2]
}
Hide Some Features
If you prefer to selectively disable certain features, DebugSwift can now deactivate unnecessary functionalities. This can assist you in development across various environments.
Usage
func application(
_: UIApplication,
didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
DebugSwift.setup(hideFeatures: [.resources,.performance,.interface,.app]) // Example usage for hide resources, performance, interface & app
DebugSwift.show()
return true
}
Change Appearance
Dynamic Theme: Easily Change the Interface Appearance from Dark to Light, Customize According to Your Needs.
Usage
func application(
_: UIApplication,
didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
DebugSwift.theme(appearance: .light)
DebugSwift.setup()
DebugSwift.show()
return true
}
Results
Enhanced Hierarchy Tree for Deeper Application Insights (Beta)
Harness the Power of Visual Information within the iOS Hierarchy Tree to Uncover Intricate Layouts and Element Relationships in Your Application.
How to Use
Simply press and hold the circle button to reveal the Snapshot and Hierarchy for a comprehensive overview.
Results
Explore Additional Details
Enhance your understanding by pressing and holding on a specific view to reveal information such as:
- Class
- Subviews
- Background Color
- Specific attributes based on the type (e.g., UILabel: Text, Font, and TextColor).
Results
Contributors
Our contributors have made this project possible. Thank you!
https://github.com/DebugSwift/DebugSwift/graphs/contributors
Contributing
Contributions are welcome! If you have suggestions, improvements, or bug fixes, please submit a pull request. Let’s make DebugSwift even more powerful together!
License
DebugSwift is licensed under the MIT License — see the file for details.
References
- [InAppViewDebugger](https://github.com/indragiek/InAppViewDebugger)
- [CocoaDebug](https://github.com/CocoaDebug/CocoaDebug)
- [DBDebugToolkit](https://github.com/dbukowski/DBDebugToolkit)