Skip to content

Commit b6fa36a

Browse files
author
Bartosz Litwiniuk
committed
PR fixes
1 parent a0e201e commit b6fa36a

4 files changed

Lines changed: 46 additions & 55 deletions

File tree

Runtime/Model/BacktraceUnhandledException.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,8 @@ private List<BacktraceStackFrame> ConvertStackFrames(IEnumerable<string> frames)
137137
}
138138

139139
// we require a '(' that appears before this ')'
140-
int openParenIndex = frameString.LastIndexOf('(', methodNameEndIndex);
141-
if (openParenIndex == -1 || openParenIndex > methodNameEndIndex)
140+
int openParentIndex = frameString.LastIndexOf('(', methodNameEndIndex);
141+
if (openParentIndex == -1 || openParentIndex > methodNameEndIndex)
142142
{
143143
// invalid shape: no matching '(' before ')'
144144
result.Add(new BacktraceStackFrame { FunctionName = frame });
@@ -282,8 +282,6 @@ private BacktraceStackFrame SetNativeStackTraceInformation(string frameString)
282282
var stackFrame = new BacktraceStackFrame
283283
{
284284
StackFrameType = Types.BacktraceStackFrameType.Native,
285-
FunctionName = string.Empty,
286-
Line = 0
287285
};
288286

289287
if (string.IsNullOrEmpty(frameString))

Tests/Runtime/NativeParserTests.cs

Lines changed: 0 additions & 51 deletions
This file was deleted.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
using Backtrace.Unity.Model;
2+
using NUnit.Framework;
3+
using System.Reflection;
4+
5+
namespace Backtrace.Unity.Tests.Runtime
6+
{
7+
public class NativeStackTraceParser
8+
{
9+
private static BacktraceStackFrame Parse(string frame)
10+
{
11+
var instance = new BacktraceUnhandledException("msg", "");
12+
var methodInfo = typeof(BacktraceUnhandledException)
13+
.GetMethod("SetNativeStackTraceInformation",
14+
BindingFlags.NonPublic | BindingFlags.Instance);
15+
Assert.IsNotNull(methodInfo);
16+
return (BacktraceStackFrame)methodInfo.Invoke(instance, new object[] { frame });
17+
}
18+
19+
[Test]
20+
public void SymbolLessModuleLine_ParsesAddressAndLibrary_NoThrow()
21+
{
22+
var backtraceStackFrame = Parse("0x00007ffad7723088 (UnityPlayer)");
23+
Assert.AreEqual("0x00007ffad7723088", backtraceStackFrame.Address);
24+
Assert.AreEqual("UnityPlayer", backtraceStackFrame.Library);
25+
Assert.AreEqual(string.Empty, backtraceStackFrame.FunctionName);
26+
Assert.AreEqual(Types.BacktraceStackFrameType.Native, backtraceStackFrame.StackFrameType);
27+
}
28+
29+
[Test]
30+
public void WithSymbol_ParsesMethod()
31+
{
32+
var backtraceStackFrame = Parse("0x00007ffad7ee3c7d (UnityPlayer) UnityMain");
33+
Assert.AreEqual("UnityPlayer", backtraceStackFrame.Library);
34+
Assert.AreEqual("UnityMain", backtraceStackFrame.FunctionName);
35+
}
36+
37+
[Test]
38+
public void UnknownShape_ReturnsRawInFunctionName()
39+
{
40+
var backtraceStackFrame = Parse("nonsense frame with no address");
41+
Assert.AreEqual("nonsense frame with no address", backtraceStackFrame.FunctionName);
42+
}
43+
}
44+
}
File renamed without changes.

0 commit comments

Comments
 (0)