Skip to content

Commit

Permalink
Add getDebugImagesForImageAddressesFromCache method in the HybridSDKs…
Browse files Browse the repository at this point in the history
… header file (#4460)
  • Loading branch information
antonis authored Oct 21, 2024
1 parent fc350a4 commit 6230686
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ NS_ASSUME_NONNULL_BEGIN
- (NSArray<SentryDebugMeta *> *)getDebugImagesFromCacheForThreads:(NSArray<SentryThread *> *)threads
NS_SWIFT_NAME(getDebugImagesFromCacheForThreads(threads:));

/**
* Returns a list of debug images that are being referenced in the given image addresses.
* This function uses the @c SentryBinaryImageCache which is significantly faster than @c
* SentryCrashDefaultBinaryImageProvider for retrieving binary image information.
*/
- (NSArray<SentryDebugMeta *> *)getDebugImagesForImageAddressesFromCache:
(NSSet<NSString *> *)imageAddresses
NS_SWIFT_NAME(getDebugImagesForImageAddressesFromCache(imageAddresses:));
@end

NS_ASSUME_NONNULL_END
36 changes: 36 additions & 0 deletions Tests/SentryTests/SentryCrash/SentryDebugImageProviderTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,42 @@ class SentryDebugImageProviderTests: XCTestCase {

XCTAssertEqual(actual.count, 0)
}

func testGetDebugImagesForImageAddressesFromCache() throws {
let sut = fixture.getSut(images: fixture.getTestImages())

let imageAddress = "0x00000001410b1a00"

let actual = sut.getDebugImagesForImageAddressesFromCache(imageAddresses: [imageAddress])

XCTAssertEqual(actual.count, 1)
let image = try XCTUnwrap(actual.first)

XCTAssertEqual(image.debugID, "84BAEBDA-AD1A-33F4-B35D-8A45F5DAF322")
XCTAssertEqual(image.type, SentryDebugImageType)
XCTAssertEqual(image.imageVmAddress, "0x0000daf262294000")
XCTAssertEqual(image.imageAddress, "0x00000001410b1a00")
XCTAssertEqual(image.imageSize, 1_352_256)
XCTAssertEqual(image.codeFile, "UIKit")
}

func testGetDebugImagesForImageAddressesFromCache_GarbageImageAddress() throws {
let sut = fixture.getSut(images: fixture.getTestImages())

let imageAddress = "garbage"

let actual = sut.getDebugImagesForImageAddressesFromCache(imageAddresses: [imageAddress])

XCTAssertEqual(actual.count, 0)
}

func testGetDebugImagesForImageAddressesFromCache_EmptyArray() throws {
let sut = fixture.getSut(images: fixture.getTestImages())

let actual = sut.getDebugImagesForImageAddressesFromCache(imageAddresses: [])

XCTAssertEqual(actual.count, 0)
}

private static func createSentryCrashBinaryImage(
address: UInt64 = 0,
Expand Down

0 comments on commit 6230686

Please sign in to comment.