Пример #1
0
        private async Task InvalidateFunctions(uint functionIndexStart, uint functionIndexEnd)
        {
            var fbb = Debugger.BeginRequest();
            int requestDataOffset = ListFunctionsRequest.CreateListFunctionsRequest(
                fbb, Handle, functionIndexStart, functionIndexEnd);
            var response = await Debugger.CommitRequest(
                fbb, RequestData.ListFunctionsRequest, requestDataOffset);

            var responseData = new ListFunctionsResponse();

            response.GetResponseData(responseData);

            var functionEntry = new xe.debug.proto.FunctionEntry();

            for (int i = 0; i < responseData.EntryLength; ++i)
            {
                responseData.GetEntry(functionEntry, i);
                var function = new Function(Debugger, this, functionEntry);
                functions.Add(function);
            }

            functions.Sort((Function a, Function b) => {
                return((int)((long)a.AddressStart - (long)b.AddressStart));
            });
        }
Пример #2
0
        public async Task Invalidate()
        {
            var fbb = Debugger.BeginRequest();
            int requestDataOffset = GetFunctionRequest.CreateGetFunctionRequest(fbb, Identifier);
            var response          = await Debugger.CommitRequest(
                fbb, RequestData.GetFunctionRequest, requestDataOffset);

            var responseData = new GetFunctionResponse();

            response.GetResponseData(responseData);
            var functionData = responseData.Function;

            this.AddressEnd = functionData.AddressEnd;

            this.MachineCodeStart = functionData.MachineCodeStart;
            this.MachineCodeEnd   = functionData.MachineCodeEnd;

            this.DisasmHirUnoptimized = functionData.DisasmHirRaw;
            this.DisasmHirOptimized   = functionData.DisasmHirOpt;
            if (DisasmHirUnoptimized != null)
            {
                DisasmHirUnoptimized = DisasmHirUnoptimized.Replace("\n", "\r\n");
            }
            if (DisasmHirOptimized != null)
            {
                DisasmHirOptimized = DisasmHirOptimized.Replace("\n", "\r\n");
            }

            OnChanged();
        }
Пример #3
0
        private async Task InvalidateModule()
        {
            var fbb = Debugger.BeginRequest();
            int requestDataOffset = GetModuleRequest.CreateGetModuleRequest(fbb, Handle);
            var response          = await Debugger.CommitRequest(
                fbb, RequestData.GetModuleRequest, requestDataOffset);

            var responseData = new GetModuleResponse();

            response.GetResponseData(responseData);

            ModuleType = responseData.Module.Type;
            Name       = responseData.Module.Name;
            Path       = responseData.Module.Path;
        }
Пример #4
0
        public async Task Invalidate()
        {
            var fbb = debugger.BeginRequest();

            ListThreadsRequest.StartListThreadsRequest(fbb);
            int requestDataOffset = ListThreadsRequest.EndListThreadsRequest(fbb);
            var response          = await debugger.CommitRequest(
                fbb, RequestData.ListThreadsRequest, requestDataOffset);

            ListThreadsResponse responseData = new ListThreadsResponse();

            response.GetResponseData(responseData);

            for (int i = 0; i < responseData.ThreadLength; ++i)
            {
                var threadData = responseData.GetThread(i);
                // threadData.Name;
            }

            OnChanged();
        }
Пример #5
0
        public async Task Invalidate()
        {
            var fbb = debugger.BeginRequest();

            ListModulesRequest.StartListModulesRequest(fbb);
            int requestDataOffset = ListModulesRequest.EndListModulesRequest(fbb);
            var response          = await debugger.CommitRequest(
                fbb, RequestData.ListModulesRequest, requestDataOffset);

            ListModulesResponse responseData = new ListModulesResponse();

            response.GetResponseData(responseData);

            var pendingTasks = new List <Task>();

            for (int i = 0; i < responseData.EntryLength; ++i)
            {
                var moduleEntry = responseData.GetEntry(i);
                var module      = modules.Find((m) => m.Handle == moduleEntry.Handle);
                if (module == null)
                {
                    // Module not found.
                    module = new Module(debugger, moduleEntry.Handle);
                    pendingTasks.Add(module.Invalidate(moduleEntry.FunctionCount));
                    modules.Add(module);
                }
                else
                {
                    // Module already present.
                    pendingTasks.Add(module.Invalidate(moduleEntry.FunctionCount));
                }
            }

            await Task.WhenAll(pendingTasks);

            OnChanged();
        }