Example #1
0
		private void ReadLogFileChunk_Backtrace (BinaryReader reader)
		{
			uint code;
			code = reader.ReadUInt32 ();
			
			uint type_code;
			type_code = reader.ReadUInt32 ();
			
			int n_frames;
			n_frames = reader.ReadInt16 ();

			if (i_backtrace >= n_backtraces) {
				for (int i = 0; i < n_frames; ++i) {
					reader.ReadUInt32 (); // skip method code
					reader.ReadUInt32 (); // skip native offset
				}
				return;
			}

			Backtrace backtrace;
			backtrace = new Backtrace (code, this);
			backtraces [i_backtrace] = backtrace;

			backtrace_codes [i_backtrace] = code;
			backtrace_type_codes [i_backtrace] = type_code;

			Frame [] frames = new Frame [n_frames];
			backtrace.Frames = frames;

			for (int i = 0; i < n_frames; ++i) {
				frames [i].MethodCode = reader.ReadUInt32 ();
				frames [i].IlOffset = reader.ReadUInt32 ();
			}

			++i_backtrace;
		}
Example #2
0
		public Frame [] GetFrames (uint backtrace_code)
		{
			lazy_reader.BaseStream.Seek (backtrace_pos [backtrace_code], SeekOrigin.Begin);

			int length;
			length = lazy_reader.ReadInt32 ();

			Frame [] frames;
			frames = new Frame [length];
			for (int i = 0; i < length; ++i) {
				frames [i].MethodCode = lazy_reader.ReadUInt32 ();
				frames [i].IlOffset = lazy_reader.ReadUInt32 ();
			}

			for (int i = 0; i < length; ++i)
				GetMethod (frames [i].MethodCode,
					   out frames [i].MethodName,
					   out frames [i].MethodArguments);


			return frames;
		}