Skip to content
This repository was archived by the owner on Feb 2, 2021. It is now read-only.

Commit 7bec6ee

Browse files
authored
Merge pull request #847 from telerik/raikov/log-crash
Fixed: CLI crashes/stops responding after ~80 console.logs
2 parents faecc23 + 9d0542f commit 7bec6ee

File tree

2 files changed

+23
-18
lines changed

2 files changed

+23
-18
lines changed

mobile/device-log-provider.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export class DeviceLogProvider extends DeviceLogProviderBase {
1111

1212
let data = this.$logFilter.filterData(platform, lineText, applicationPid);
1313
if (data) {
14-
this.$logger.out(data);
14+
this.$logger.write(data);
1515
}
1616
}
1717

mobile/ios/device/ios-core.ts

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1083,18 +1083,16 @@ function getCharacterCodePoint(ch: string) {
10831083
class GDBStandardOutputAdapter extends stream.Transform {
10841084
private utf8StringDecoder = new string_decoder.StringDecoder("utf8");
10851085

1086-
constructor(private deviceIdentifier: string,
1087-
private $deviceLogProvider: Mobile.IDeviceLogProvider,
1088-
private $devicePlatformsConstants: Mobile.IDevicePlatformsConstants) {
1089-
super();
1086+
constructor(opts?:stream.TransformOptions) {
1087+
super(opts);
10901088
}
10911089

1092-
public _transform(packet: any, encoding: string, done: Function): void {
1090+
public _transform(packet:any, encoding:string, done:Function):void {
10931091
try {
10941092
let result = "";
10951093

10961094
for (let i = 0; i < packet.length; i++) {
1097-
if (packet[i] === getCharacterCodePoint("$")) {
1095+
if(packet[i] === getCharacterCodePoint("$")) {
10981096
let start = ++i;
10991097

11001098
while (packet[i] !== getCharacterCodePoint("#")) {
@@ -1106,7 +1104,7 @@ class GDBStandardOutputAdapter extends stream.Transform {
11061104
i++;
11071105
i++;
11081106

1109-
if (!(packet[start] === getCharacterCodePoint("O") && packet[start + 1] !== getCharacterCodePoint("K"))) {
1107+
if(!(packet[start] === getCharacterCodePoint("O") && packet[start + 1] !== getCharacterCodePoint("K"))) {
11101108
continue;
11111109
}
11121110
start++;
@@ -1116,13 +1114,6 @@ class GDBStandardOutputAdapter extends stream.Transform {
11161114
result += this.utf8StringDecoder.write(hex);
11171115
}
11181116
}
1119-
1120-
if (this.$deviceLogProvider) {
1121-
fiberBootstrap.run(() =>
1122-
this.$deviceLogProvider.logData(result, this.$devicePlatformsConstants.iOS, this.deviceIdentifier)
1123-
);
1124-
}
1125-
11261117
done(null, result);
11271118
} catch (e) {
11281119
done(e);
@@ -1159,11 +1150,26 @@ class GDBSignalWatcher extends stream.Writable {
11591150
}
11601151
}
11611152
}
1153+
class GDBEchoStream extends stream.Writable {
1154+
constructor(private deviceIdentifier: string,
1155+
private $deviceLogProvider: Mobile.IDeviceLogProvider,
1156+
private $devicePlatformsConstants: Mobile.IDevicePlatformsConstants) {
1157+
super();
1158+
}
1159+
1160+
_write(chunk:any, enc:string, done:Function) {
1161+
if (this.$deviceLogProvider) {
1162+
fiberBootstrap.run(() => {
1163+
this.$deviceLogProvider.logData(chunk.toString(), this.$devicePlatformsConstants.iOS, this.deviceIdentifier);
1164+
});
1165+
}
1166+
done();
1167+
}
1168+
}
11621169

11631170
export class GDBServer implements Mobile.IGDBServer {
11641171
private okResponse = "$OK#";
11651172
private isInitilized = false;
1166-
11671173
constructor(private socket: any, // socket is fd on Windows and net.Socket on mac
11681174
private deviceIdentifier: string,
11691175
private $injector: IInjector,
@@ -1192,7 +1198,6 @@ export class GDBServer implements Mobile.IGDBServer {
11921198
this.awaitResponse("QSetDisableASLR:1").wait();
11931199
let encodedArguments = _.map(argv, (arg, index) => util.format("%d,%d,%s", arg.length * 2, index, this.toHex(arg))).join(",");
11941200
this.awaitResponse("A" + encodedArguments).wait();
1195-
11961201
this.isInitilized = true;
11971202
}
11981203
}).future<void>()();
@@ -1215,7 +1220,7 @@ export class GDBServer implements Mobile.IGDBServer {
12151220
this.sendCore(this.encodeData("D"));
12161221
}
12171222
} else {
1218-
this.socket.pipe(this.$injector.resolve(GDBStandardOutputAdapter, { deviceIdentifier: this.deviceIdentifier }));
1223+
this.socket.pipe(new GDBStandardOutputAdapter()).pipe(this.$injector.resolve(GDBEchoStream, { deviceIdentifier: this.deviceIdentifier }));
12191224
this.socket.pipe(new GDBSignalWatcher());
12201225
this.sendCore(this.encodeData("vCont;c"));
12211226
}

0 commit comments

Comments
 (0)