parent
ffb1717788
commit
cd5d664e9d
|
@ -13,9 +13,6 @@
|
|||
[submodule "third_party/imgui"]
|
||||
path = third_party/imgui
|
||||
url = https://github.com/ocornut/imgui.git
|
||||
[submodule "third_party/dockpanelsuite"]
|
||||
path = third_party/dockpanelsuite
|
||||
url = https://github.com/xenia-project/dockpanelsuite.git
|
||||
[submodule "third_party/flatbuffers"]
|
||||
path = third_party/flatbuffers
|
||||
url = https://github.com/google/flatbuffers.git
|
||||
|
|
|
@ -1,150 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{5AE85790-F2EA-4077-8953-825E9C0AADE9}</ProjectGuid>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<Keyword>ManagedCProj</Keyword>
|
||||
<RootNamespace>XeniaDebugNative</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<CLRSupport>true</CLRSupport>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<CLRSupport>true</CLRSupport>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\..\build\Xenia.Cpp.x64.Common.props" />
|
||||
<Import Project="..\..\build\Xenia.Cpp.x64.Debug.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\..\build\Xenia.Cpp.x64.Common.props" />
|
||||
<Import Project="..\..\build\Xenia.Cpp.x64.Release.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level2</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\third_party\capstone\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>
|
||||
</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level2</WarningLevel>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\third_party\capstone\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>
|
||||
</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>
|
||||
</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86BaseInfo.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86Disassembler.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoder.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoderCommon.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86InstPrinter.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86Mapping.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\cs_priv.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\include\capstone.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\include\platform.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\include\x86.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\LEB128.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MathExtras.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MCDisassembler.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MCFixedLenDisassembler.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MCInst.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MCInstrDesc.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MCRegisterInfo.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\myinttypes.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\SStream.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\utils.h" />
|
||||
<ClInclude Include="..\xenia\base\assert.h" />
|
||||
<ClInclude Include="..\xenia\base\byte_order.h" />
|
||||
<ClInclude Include="..\xenia\base\math.h" />
|
||||
<ClInclude Include="..\xenia\base\string_buffer.h" />
|
||||
<ClInclude Include="..\xenia\cpu\frontend\ppc_disasm.h" />
|
||||
<ClInclude Include="..\xenia\cpu\frontend\ppc_instr.h" />
|
||||
<ClInclude Include="..\xenia\cpu\frontend\ppc_instr_tables.h" />
|
||||
<ClInclude Include="disassembler.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Disassembler.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoder.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86IntelInstPrinter.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Mapping.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Module.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\cs.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\MCInst.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\MCInstrDesc.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\MCRegisterInfo.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\SStream.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\utils.c" />
|
||||
<ClCompile Include="..\xenia\base\string_buffer.cc" />
|
||||
<ClCompile Include="..\xenia\cpu\frontend\ppc_disasm.cc" />
|
||||
<ClCompile Include="..\xenia\cpu\frontend\ppc_instr.cc" />
|
||||
<ClCompile Include="assembly_info.cc" />
|
||||
<ClCompile Include="disassembler.cc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter1.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter1_reduce.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter_reduce.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenDisassemblerTables.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenDisassemblerTables_reduce.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenInstrInfo.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenInstrInfo_reduce.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenRegisterInfo.inc" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
|
@ -1,209 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="third_party">
|
||||
<UniqueIdentifier>{f0462696-4abd-4dc9-8290-aafff5ca6158}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src">
|
||||
<UniqueIdentifier>{1a3b1c52-32cb-477e-9008-f2f9a6171c8c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src\xenia">
|
||||
<UniqueIdentifier>{5fb51b29-2462-49de-89c1-e332aafa0ca9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src\xenia\debug">
|
||||
<UniqueIdentifier>{15585f2e-55a4-4af5-bb24-6d6649d74ed0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="third_party\capstone">
|
||||
<UniqueIdentifier>{920bc92f-e430-4c48-86dd-1a697c9a5fd1}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="third_party\capstone\include">
|
||||
<UniqueIdentifier>{d26b9a34-94fd-493b-841e-2ae2561bc584}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="third_party\capstone\arch">
|
||||
<UniqueIdentifier>{c9adeb1a-189d-4877-9bbd-c9948401b63e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="third_party\capstone\arch\X86">
|
||||
<UniqueIdentifier>{4e8ea226-a18e-413a-95bd-6b3e5f4f8460}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src\Xenia.Debug.Native">
|
||||
<UniqueIdentifier>{fc34f72d-e3c6-4fe7-9645-7b422ffaad57}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src\xenia\debug\native">
|
||||
<UniqueIdentifier>{e530b0a2-9f4a-4b85-aee8-7185042251b1}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src\xenia\base">
|
||||
<UniqueIdentifier>{3945623c-9ad7-4f3e-9918-b31ede4e115f}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src\xenia\cpu">
|
||||
<UniqueIdentifier>{796d5778-3fc4-42b0-b59a-39340f5b7989}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src\xenia\cpu\frontend">
|
||||
<UniqueIdentifier>{d4d6e5f8-e3d4-424e-b195-77fc1b3f5590}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\third_party\capstone\cs_priv.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\LEB128.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MathExtras.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MCDisassembler.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MCFixedLenDisassembler.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MCInst.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MCInstrDesc.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MCRegisterInfo.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\myinttypes.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\SStream.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\utils.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\include\capstone.h">
|
||||
<Filter>third_party\capstone\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\include\platform.h">
|
||||
<Filter>third_party\capstone\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\include\x86.h">
|
||||
<Filter>third_party\capstone\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86BaseInfo.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86Disassembler.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoder.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoderCommon.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86InstPrinter.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86Mapping.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\xenia\base\string_buffer.h">
|
||||
<Filter>src\xenia\base</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\xenia\cpu\frontend\ppc_disasm.h">
|
||||
<Filter>src\xenia\cpu\frontend</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\xenia\cpu\frontend\ppc_instr.h">
|
||||
<Filter>src\xenia\cpu\frontend</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\xenia\base\assert.h">
|
||||
<Filter>src\xenia\base</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\xenia\base\math.h">
|
||||
<Filter>src\xenia\base</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="disassembler.h">
|
||||
<Filter>src\Xenia.Debug.Native</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\xenia\cpu\frontend\ppc_instr_tables.h">
|
||||
<Filter>src\xenia\cpu\frontend</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\xenia\base\byte_order.h">
|
||||
<Filter>src\xenia\base</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\third_party\capstone\cs.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\MCInst.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\MCInstrDesc.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\MCRegisterInfo.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\SStream.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\utils.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Disassembler.c">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoder.c">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86IntelInstPrinter.c">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Mapping.c">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Module.c">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="assembly_info.cc">
|
||||
<Filter>src\Xenia.Debug.Native</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\xenia\base\string_buffer.cc">
|
||||
<Filter>src\xenia\base</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\xenia\cpu\frontend\ppc_disasm.cc">
|
||||
<Filter>src\xenia\cpu\frontend</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="disassembler.cc">
|
||||
<Filter>src\Xenia.Debug.Native</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\xenia\cpu\frontend\ppc_instr.cc">
|
||||
<Filter>src\xenia\cpu\frontend</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter_reduce.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter1.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter1_reduce.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenDisassemblerTables.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenDisassemblerTables_reduce.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenInstrInfo.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenInstrInfo_reduce.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenRegisterInfo.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
|
@ -1,46 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using namespace System;
|
||||
using namespace System::Reflection;
|
||||
using namespace System::Runtime::CompilerServices;
|
||||
using namespace System::Runtime::InteropServices;
|
||||
using namespace System::Security::Permissions;
|
||||
|
||||
//
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
//
|
||||
[assembly:AssemblyTitleAttribute(L"Xenia.Debug.Native")];
|
||||
[assembly:AssemblyDescriptionAttribute(L"")];
|
||||
[assembly:AssemblyConfigurationAttribute(L"")];
|
||||
[assembly:AssemblyCompanyAttribute(L"")];
|
||||
[assembly:AssemblyProductAttribute(L"Xenia.Debug.Native")];
|
||||
[assembly:AssemblyCopyrightAttribute(L"Copyright (c) Ben Vanik 2015")];
|
||||
[assembly:AssemblyTrademarkAttribute(L"")];
|
||||
[assembly:AssemblyCultureAttribute(L"")];
|
||||
|
||||
//
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the value or you can default the Revision and Build
|
||||
// Numbers
|
||||
// by using the '*' as shown below:
|
||||
|
||||
[assembly:AssemblyVersionAttribute("1.0.*")];
|
||||
|
||||
[assembly:ComVisible(false)];
|
||||
|
||||
[assembly:CLSCompliantAttribute(true)];
|
|
@ -1,82 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "Xenia.Debug.Native/disassembler.h"
|
||||
|
||||
#include "xenia/base/byte_order.h"
|
||||
#include "xenia/base/string_buffer.h"
|
||||
#include "xenia/cpu/frontend/ppc_disasm.h"
|
||||
#include "third_party/capstone/include/capstone.h"
|
||||
#include "third_party/capstone/include/x86.h"
|
||||
|
||||
namespace Xenia {
|
||||
namespace Debug {
|
||||
namespace Native {
|
||||
|
||||
using namespace System;
|
||||
using namespace System::Text;
|
||||
|
||||
Disassembler::Disassembler()
|
||||
: capstone_handle_(0), string_buffer_(new xe::StringBuffer()) {
|
||||
uintptr_t capstone_handle;
|
||||
if (cs_open(CS_ARCH_X86, CS_MODE_64, &capstone_handle) != CS_ERR_OK) {
|
||||
System::Diagnostics::Debug::Fail("Failed to initialize capstone");
|
||||
return;
|
||||
}
|
||||
capstone_handle_ = capstone_handle;
|
||||
cs_option(capstone_handle_, CS_OPT_SYNTAX, CS_OPT_SYNTAX_INTEL);
|
||||
cs_option(capstone_handle_, CS_OPT_DETAIL, CS_OPT_OFF);
|
||||
}
|
||||
|
||||
Disassembler::~Disassembler() {
|
||||
if (capstone_handle_) {
|
||||
pin_ptr<uintptr_t> capstone_handle = &capstone_handle_;
|
||||
cs_close(capstone_handle);
|
||||
}
|
||||
delete string_buffer_;
|
||||
}
|
||||
|
||||
String ^ Disassembler::DisassemblePPC(IntPtr code_address, size_t code_size) {
|
||||
string_buffer_->Reset();
|
||||
|
||||
auto code_base = reinterpret_cast<const uint32_t*>(code_address.ToPointer());
|
||||
for (int i = 0; i < code_size / 4; ++i) {
|
||||
xe::cpu::frontend::InstrData instr;
|
||||
instr.address = uint32_t(code_address.ToInt64()) + i * 4;
|
||||
instr.code = xe::byte_swap(code_base[i]);
|
||||
instr.type = xe::cpu::frontend::GetInstrType(instr.code);
|
||||
string_buffer_->AppendFormat("%.8X %.8X ", instr.address, instr.code);
|
||||
xe::cpu::frontend::DisasmPPC(instr, string_buffer_);
|
||||
string_buffer_->Append("\r\n");
|
||||
}
|
||||
|
||||
return gcnew String(string_buffer_->ToString());
|
||||
}
|
||||
|
||||
String ^ Disassembler::DisassembleX64(IntPtr code_address, size_t code_size) {
|
||||
string_buffer_->Reset();
|
||||
|
||||
auto code_base = reinterpret_cast<const uint8_t*>(code_address.ToPointer());
|
||||
auto code_ptr = code_base;
|
||||
size_t remaining_code_size = code_size;
|
||||
uint64_t address = uint64_t(code_address.ToInt64());
|
||||
cs_insn insn = {0};
|
||||
while (remaining_code_size &&
|
||||
cs_disasm_iter(capstone_handle_, &code_ptr, &remaining_code_size,
|
||||
&address, &insn)) {
|
||||
string_buffer_->AppendFormat("%.8X %-6s %s\n", uint32_t(insn.address),
|
||||
insn.mnemonic, insn.op_str);
|
||||
}
|
||||
|
||||
return gcnew String(string_buffer_->ToString());
|
||||
}
|
||||
|
||||
} // namespace Native
|
||||
} // namespace Debug
|
||||
} // namespace Xenia
|
|
@ -1,42 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef XENIA_DEBUG_NATIVE_DISASSEMBLER_H_
|
||||
#define XENIA_DEBUG_NATIVE_DISASSEMBLER_H_
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include "xenia/base/string_buffer.h"
|
||||
|
||||
namespace Xenia {
|
||||
namespace Debug {
|
||||
namespace Native {
|
||||
|
||||
using namespace System;
|
||||
using namespace System::Text;
|
||||
|
||||
public
|
||||
ref class Disassembler {
|
||||
public:
|
||||
Disassembler();
|
||||
~Disassembler();
|
||||
|
||||
String ^ DisassemblePPC(IntPtr code_address, size_t code_size);
|
||||
String ^ DisassembleX64(IntPtr code_address, size_t code_size);
|
||||
|
||||
private:
|
||||
uintptr_t capstone_handle_;
|
||||
xe::StringBuffer* string_buffer_;
|
||||
};
|
||||
|
||||
} // namespace Native
|
||||
} // namespace Debug
|
||||
} // namespace Xenia
|
||||
|
||||
#endif // XENIA_DEBUG_NATIVE_DISASSEMBLER_H_
|
|
@ -1,6 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
|
||||
</startup>
|
||||
</configuration>
|
|
@ -1,33 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Controls {
|
||||
partial class BaseDocument {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Text = "BaseDocument";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
|
||||
namespace Xenia.Debug.UI.Controls {
|
||||
public partial class BaseDocument : DockContent {
|
||||
public static MainWindow MainWindow;
|
||||
|
||||
public BaseDocument() {
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Controls {
|
||||
partial class BasePanel {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Text = "BasePanel";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
|
||||
namespace Xenia.Debug.UI.Controls {
|
||||
public partial class BasePanel : DockContent {
|
||||
public static MainWindow MainWindow;
|
||||
|
||||
public BasePanel() {
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,246 +0,0 @@
|
|||
namespace Xenia.Debug.UI {
|
||||
partial class MainWindow {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainWindow));
|
||||
this.mainMenuStrip = new System.Windows.Forms.MenuStrip();
|
||||
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.mainToolStrip = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
||||
this.statusStrip = new System.Windows.Forms.StatusStrip();
|
||||
this.statusMessageLabel = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.controlToolStrip = new System.Windows.Forms.ToolStrip();
|
||||
this.threadToolStripLabel = new System.Windows.Forms.ToolStripLabel();
|
||||
this.threadToolStripComboBox = new System.Windows.Forms.ToolStripComboBox();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.continueToolStripButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.breakToolStripButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.stopToolStripButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.stepInToolStripButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.stepOverToolStripButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.stepOutToolStripButton = new System.Windows.Forms.ToolStripButton();
|
||||
this.mainMenuStrip.SuspendLayout();
|
||||
this.mainToolStrip.SuspendLayout();
|
||||
this.statusStrip.SuspendLayout();
|
||||
this.controlToolStrip.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// mainMenuStrip
|
||||
//
|
||||
this.mainMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.fileToolStripMenuItem});
|
||||
this.mainMenuStrip.Location = new System.Drawing.Point(0, 0);
|
||||
this.mainMenuStrip.Name = "mainMenuStrip";
|
||||
this.mainMenuStrip.Size = new System.Drawing.Size(1571, 24);
|
||||
this.mainMenuStrip.TabIndex = 0;
|
||||
//
|
||||
// fileToolStripMenuItem
|
||||
//
|
||||
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
|
||||
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
|
||||
this.fileToolStripMenuItem.Text = "&File";
|
||||
//
|
||||
// mainToolStrip
|
||||
//
|
||||
this.mainToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripButton1});
|
||||
this.mainToolStrip.Location = new System.Drawing.Point(0, 24);
|
||||
this.mainToolStrip.Name = "mainToolStrip";
|
||||
this.mainToolStrip.Size = new System.Drawing.Size(1571, 25);
|
||||
this.mainToolStrip.TabIndex = 3;
|
||||
this.mainToolStrip.Text = "toolStrip1";
|
||||
//
|
||||
// toolStripButton1
|
||||
//
|
||||
this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
|
||||
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton1.Name = "toolStripButton1";
|
||||
this.toolStripButton1.Size = new System.Drawing.Size(23, 22);
|
||||
this.toolStripButton1.Text = "toolStripButton1";
|
||||
//
|
||||
// statusStrip
|
||||
//
|
||||
this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.statusMessageLabel});
|
||||
this.statusStrip.Location = new System.Drawing.Point(0, 1081);
|
||||
this.statusStrip.Name = "statusStrip";
|
||||
this.statusStrip.Size = new System.Drawing.Size(1571, 22);
|
||||
this.statusStrip.TabIndex = 4;
|
||||
this.statusStrip.Text = "statusStrip1";
|
||||
//
|
||||
// statusMessageLabel
|
||||
//
|
||||
this.statusMessageLabel.Name = "statusMessageLabel";
|
||||
this.statusMessageLabel.Size = new System.Drawing.Size(0, 17);
|
||||
//
|
||||
// controlToolStrip
|
||||
//
|
||||
this.controlToolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.threadToolStripLabel,
|
||||
this.threadToolStripComboBox,
|
||||
this.toolStripSeparator1,
|
||||
this.continueToolStripButton,
|
||||
this.breakToolStripButton,
|
||||
this.stopToolStripButton,
|
||||
this.toolStripSeparator2,
|
||||
this.stepInToolStripButton,
|
||||
this.stepOverToolStripButton,
|
||||
this.stepOutToolStripButton});
|
||||
this.controlToolStrip.Location = new System.Drawing.Point(0, 49);
|
||||
this.controlToolStrip.Name = "controlToolStrip";
|
||||
this.controlToolStrip.Size = new System.Drawing.Size(1571, 25);
|
||||
this.controlToolStrip.TabIndex = 6;
|
||||
this.controlToolStrip.Text = "toolStrip1";
|
||||
//
|
||||
// threadToolStripLabel
|
||||
//
|
||||
this.threadToolStripLabel.Name = "threadToolStripLabel";
|
||||
this.threadToolStripLabel.Size = new System.Drawing.Size(47, 22);
|
||||
this.threadToolStripLabel.Text = "Thread:";
|
||||
//
|
||||
// threadToolStripComboBox
|
||||
//
|
||||
this.threadToolStripComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.threadToolStripComboBox.Name = "threadToolStripComboBox";
|
||||
this.threadToolStripComboBox.Size = new System.Drawing.Size(250, 25);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
|
||||
//
|
||||
// continueToolStripButton
|
||||
//
|
||||
this.continueToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.play;
|
||||
this.continueToolStripButton.ImageTransparentColor = System.Drawing.Color.Transparent;
|
||||
this.continueToolStripButton.Name = "continueToolStripButton";
|
||||
this.continueToolStripButton.Size = new System.Drawing.Size(76, 22);
|
||||
this.continueToolStripButton.Text = "Continue";
|
||||
this.continueToolStripButton.Click += new System.EventHandler(this.continueToolStripButton_Click);
|
||||
//
|
||||
// breakToolStripButton
|
||||
//
|
||||
this.breakToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.breakToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.pause;
|
||||
this.breakToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.breakToolStripButton.Name = "breakToolStripButton";
|
||||
this.breakToolStripButton.Size = new System.Drawing.Size(23, 22);
|
||||
this.breakToolStripButton.Text = "Break";
|
||||
this.breakToolStripButton.Click += new System.EventHandler(this.breakToolStripButton_Click);
|
||||
//
|
||||
// stopToolStripButton
|
||||
//
|
||||
this.stopToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.stopToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.stop;
|
||||
this.stopToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.stopToolStripButton.Name = "stopToolStripButton";
|
||||
this.stopToolStripButton.Size = new System.Drawing.Size(23, 22);
|
||||
this.stopToolStripButton.Text = "Stop";
|
||||
this.stopToolStripButton.Click += new System.EventHandler(this.stopToolStripButton_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
|
||||
//
|
||||
// stepInToolStripButton
|
||||
//
|
||||
this.stepInToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.stepInToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.step_in;
|
||||
this.stepInToolStripButton.ImageTransparentColor = System.Drawing.Color.Transparent;
|
||||
this.stepInToolStripButton.Name = "stepInToolStripButton";
|
||||
this.stepInToolStripButton.Size = new System.Drawing.Size(23, 22);
|
||||
this.stepInToolStripButton.Text = "Step In";
|
||||
this.stepInToolStripButton.Click += new System.EventHandler(this.stepInToolStripButton_Click);
|
||||
//
|
||||
// stepOverToolStripButton
|
||||
//
|
||||
this.stepOverToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.stepOverToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.step_over;
|
||||
this.stepOverToolStripButton.ImageTransparentColor = System.Drawing.Color.Transparent;
|
||||
this.stepOverToolStripButton.Name = "stepOverToolStripButton";
|
||||
this.stepOverToolStripButton.Size = new System.Drawing.Size(23, 22);
|
||||
this.stepOverToolStripButton.Text = "Step Over";
|
||||
this.stepOverToolStripButton.Click += new System.EventHandler(this.stepOverToolStripButton_Click);
|
||||
//
|
||||
// stepOutToolStripButton
|
||||
//
|
||||
this.stepOutToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
|
||||
this.stepOutToolStripButton.Image = global::Xenia.Debug.UI.Properties.Resources.step_out;
|
||||
this.stepOutToolStripButton.ImageTransparentColor = System.Drawing.Color.Transparent;
|
||||
this.stepOutToolStripButton.Name = "stepOutToolStripButton";
|
||||
this.stepOutToolStripButton.Size = new System.Drawing.Size(23, 22);
|
||||
this.stepOutToolStripButton.Text = "Step Out";
|
||||
this.stepOutToolStripButton.Click += new System.EventHandler(this.stepOutToolStripButton_Click);
|
||||
//
|
||||
// MainWindow
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1571, 1103);
|
||||
this.Controls.Add(this.controlToolStrip);
|
||||
this.Controls.Add(this.statusStrip);
|
||||
this.Controls.Add(this.mainToolStrip);
|
||||
this.Controls.Add(this.mainMenuStrip);
|
||||
this.IsMdiContainer = true;
|
||||
this.MainMenuStrip = this.mainMenuStrip;
|
||||
this.Name = "MainWindow";
|
||||
this.Text = "Xenia Debugger";
|
||||
this.mainMenuStrip.ResumeLayout(false);
|
||||
this.mainMenuStrip.PerformLayout();
|
||||
this.mainToolStrip.ResumeLayout(false);
|
||||
this.mainToolStrip.PerformLayout();
|
||||
this.statusStrip.ResumeLayout(false);
|
||||
this.statusStrip.PerformLayout();
|
||||
this.controlToolStrip.ResumeLayout(false);
|
||||
this.controlToolStrip.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.MenuStrip mainMenuStrip;
|
||||
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStrip mainToolStrip;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton1;
|
||||
private System.Windows.Forms.StatusStrip statusStrip;
|
||||
private System.Windows.Forms.ToolStripStatusLabel statusMessageLabel;
|
||||
private WeifenLuo.WinFormsUI.Docking.DockPanel dockPanel;
|
||||
private System.Windows.Forms.ToolStrip controlToolStrip;
|
||||
private System.Windows.Forms.ToolStripLabel threadToolStripLabel;
|
||||
private System.Windows.Forms.ToolStripComboBox threadToolStripComboBox;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripButton continueToolStripButton;
|
||||
private System.Windows.Forms.ToolStripButton breakToolStripButton;
|
||||
private System.Windows.Forms.ToolStripButton stopToolStripButton;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||
private System.Windows.Forms.ToolStripButton stepInToolStripButton;
|
||||
private System.Windows.Forms.ToolStripButton stepOverToolStripButton;
|
||||
private System.Windows.Forms.ToolStripButton stepOutToolStripButton;
|
||||
}
|
||||
}
|
|
@ -1,226 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
using Xenia.Debug.UI.Views;
|
||||
using Xenia.Debug.Utilities;
|
||||
|
||||
namespace Xenia.Debug.UI {
|
||||
public partial class MainWindow : Form {
|
||||
// private DeserializeDockContent deserializeDockContent;
|
||||
|
||||
private BreakpointsPanel breakpointsPanel;
|
||||
private CallstackPanel callstackPanel;
|
||||
private readonly List<CodeDocument> codeDocuments = new List<CodeDocument>();
|
||||
private FilesystemPanel filesystemPanel;
|
||||
private FunctionsPanel functionsPanel;
|
||||
private HeapDocument heapDocument;
|
||||
private readonly List<MemoryDocument> memoryDocuments = new List<MemoryDocument>();
|
||||
private ModulesPanel modulesPanel;
|
||||
private ProfilePanel profilePanel;
|
||||
private readonly List<RegistersPanel> registersPanels = new List<RegistersPanel>();
|
||||
private StatisticsDocument statisticsDocument;
|
||||
private ThreadsPanel threadsPanel;
|
||||
private TracePanel tracePanel;
|
||||
|
||||
public Debugger Debugger {
|
||||
get;
|
||||
}
|
||||
|
||||
public MainWindow() {
|
||||
InitializeComponent();
|
||||
|
||||
BasePanel.MainWindow = this;
|
||||
BaseDocument.MainWindow = this;
|
||||
|
||||
dockPanel = new DockPanel();
|
||||
dockPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
dockPanel.DockBackColor = System.Drawing.SystemColors.AppWorkspace;
|
||||
dockPanel.DockBottomPortion = 200D;
|
||||
dockPanel.DockLeftPortion = 350D;
|
||||
dockPanel.Name = "dockPanel";
|
||||
Controls.Add(dockPanel);
|
||||
Controls.SetChildIndex(dockPanel, 0);
|
||||
|
||||
Debugger = new Debugger((AsyncTask task) => {
|
||||
BeginInvoke(task);
|
||||
});
|
||||
|
||||
breakpointsPanel = new BreakpointsPanel(Debugger);
|
||||
callstackPanel = new CallstackPanel(Debugger);
|
||||
codeDocuments.Add(new CodeDocument(Debugger));
|
||||
filesystemPanel = new FilesystemPanel(Debugger);
|
||||
functionsPanel = new FunctionsPanel(Debugger);
|
||||
heapDocument = new HeapDocument(Debugger);
|
||||
memoryDocuments.Add(new MemoryDocument(Debugger));
|
||||
modulesPanel = new ModulesPanel(Debugger);
|
||||
profilePanel = new ProfilePanel(Debugger);
|
||||
registersPanels.Add(new RegistersPanel(Debugger, RegisterClass.GuestGeneralPurpose));
|
||||
registersPanels.Add(new RegistersPanel(Debugger, RegisterClass.GuestFloatingPoint));
|
||||
registersPanels.Add(new RegistersPanel(Debugger, RegisterClass.GuestVector));
|
||||
statisticsDocument = new StatisticsDocument(Debugger);
|
||||
threadsPanel = new ThreadsPanel(Debugger);
|
||||
tracePanel = new TracePanel(Debugger);
|
||||
|
||||
// deserializeDockContent =
|
||||
// new DeserializeDockContent(GetContentFromPersistString);
|
||||
|
||||
SetupDefaultLayout();
|
||||
|
||||
// For hotkeys.
|
||||
KeyPreview = true;
|
||||
|
||||
Debugger.StateChanged += Debugger_StateChanged;
|
||||
Debugger_StateChanged(this, Debugger.CurrentState);
|
||||
Debugger.CurrentContext.Changed += CurrentContext_Changed;
|
||||
CurrentContext_Changed(Debugger.CurrentContext);
|
||||
|
||||
Debugger.Attach();
|
||||
}
|
||||
|
||||
private void Debugger_StateChanged(object sender, Debugger.State e) {
|
||||
bool enabled = false;
|
||||
switch (e) {
|
||||
case Debugger.State.Idle:
|
||||
statusMessageLabel.Text = "Idle";
|
||||
break;
|
||||
case Debugger.State.Attaching:
|
||||
statusMessageLabel.Text = "Attaching";
|
||||
break;
|
||||
case Debugger.State.Attached:
|
||||
statusMessageLabel.Text = "Attached";
|
||||
enabled = true;
|
||||
break;
|
||||
case Debugger.State.Detached:
|
||||
statusMessageLabel.Text = "Detached";
|
||||
break;
|
||||
}
|
||||
|
||||
controlToolStrip.Enabled = enabled;
|
||||
}
|
||||
|
||||
private void CurrentContext_Changed(Context sender) {
|
||||
bool enabled = false;
|
||||
switch (Debugger.CurrentContext.RunState) {
|
||||
case RunState.Updating:
|
||||
enabled = false;
|
||||
break;
|
||||
case RunState.Running:
|
||||
enabled = false;
|
||||
break;
|
||||
case RunState.Paused:
|
||||
enabled = true;
|
||||
break;
|
||||
}
|
||||
breakToolStripButton.Enabled = !enabled;
|
||||
continueToolStripButton.Enabled = enabled;
|
||||
stepInToolStripButton.Enabled = enabled;
|
||||
stepOverToolStripButton.Enabled = enabled;
|
||||
stepOutToolStripButton.Enabled = enabled;
|
||||
|
||||
// TODO(benvanik): set thread info/etc.
|
||||
}
|
||||
|
||||
private void SetupDefaultLayout() {
|
||||
dockPanel.SuspendLayout(true);
|
||||
|
||||
filesystemPanel.Show(dockPanel, DockState.DockLeft);
|
||||
functionsPanel.Show(filesystemPanel.Pane, filesystemPanel);
|
||||
|
||||
breakpointsPanel.Show(dockPanel, DockState.DockBottom);
|
||||
callstackPanel.Show(breakpointsPanel.Pane, breakpointsPanel);
|
||||
|
||||
modulesPanel.Show(breakpointsPanel.Pane, DockAlignment.Right, 0.5);
|
||||
threadsPanel.Show(modulesPanel.Pane, modulesPanel);
|
||||
|
||||
registersPanels[registersPanels.Count - 1].Show(filesystemPanel.Pane,
|
||||
DockAlignment.Right, 0.5);
|
||||
for (int i = registersPanels.Count - 2; i >= 0; --i) {
|
||||
registersPanels[i].Show(registersPanels[i + 1].Pane, registersPanels[i + 1]);
|
||||
}
|
||||
|
||||
foreach (var codeDocument in codeDocuments) {
|
||||
codeDocument.Show(dockPanel, DockState.Document);
|
||||
}
|
||||
|
||||
heapDocument.Show(codeDocuments[0].Pane, DockAlignment.Right, 0.5);
|
||||
for (int i = 0; i < memoryDocuments.Count; ++i) {
|
||||
memoryDocuments[i].Show(heapDocument.Pane, heapDocument);
|
||||
}
|
||||
|
||||
tracePanel.Show(heapDocument.Pane, DockAlignment.Bottom, 0.5);
|
||||
statisticsDocument.Show(tracePanel.Pane, tracePanel);
|
||||
|
||||
dockPanel.ResumeLayout(true, true);
|
||||
}
|
||||
|
||||
public void OpenFunction(Function function) {
|
||||
var document = codeDocuments[0];
|
||||
document.Show(function);
|
||||
}
|
||||
|
||||
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
|
||||
//if (keyData == (Keys.Control | Keys.F)) {
|
||||
// MessageBox.Show("What the Ctrl+F?");
|
||||
// return true;
|
||||
//}
|
||||
if (keyData == Keys.F11) {
|
||||
stepInToolStripButton_Click(this, EventArgs.Empty);
|
||||
return true;
|
||||
} else if (keyData == Keys.F10) {
|
||||
stepOverToolStripButton_Click(this, EventArgs.Empty);
|
||||
return true;
|
||||
} else if (keyData == (Keys.Shift | Keys.F11)) {
|
||||
stepOutToolStripButton_Click(this, EventArgs.Empty);
|
||||
return true;
|
||||
} else if (keyData == (Keys.Pause)) {
|
||||
breakToolStripButton_Click(this, EventArgs.Empty);
|
||||
return true;
|
||||
} else if (keyData == (Keys.Shift | Keys.F5)) {
|
||||
stopToolStripButton_Click(this, EventArgs.Empty);
|
||||
return true;
|
||||
}
|
||||
return base.ProcessCmdKey(ref msg, keyData);
|
||||
}
|
||||
|
||||
private void continueToolStripButton_Click(object sender, EventArgs e) {
|
||||
Debugger.Continue();
|
||||
}
|
||||
|
||||
private void breakToolStripButton_Click(object sender, EventArgs e) {
|
||||
Debugger.Break();
|
||||
}
|
||||
|
||||
private void stopToolStripButton_Click(object sender, EventArgs e) {
|
||||
Debugger.Stop();
|
||||
}
|
||||
|
||||
private void stepInToolStripButton_Click(object sender, EventArgs e) {
|
||||
Debugger.StepIn();
|
||||
}
|
||||
|
||||
private void stepOverToolStripButton_Click(object sender, EventArgs e) {
|
||||
Debugger.StepOver();
|
||||
}
|
||||
|
||||
private void stepOutToolStripButton_Click(object sender, EventArgs e) {
|
||||
Debugger.StepOut();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,151 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="mainMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="mainMenuStrip.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="mainToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>132, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
|
||||
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
|
||||
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
|
||||
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
|
||||
VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9
|
||||
c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32
|
||||
Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo
|
||||
mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+
|
||||
kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D
|
||||
TgDQASA1MVpwzwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>237, 17</value>
|
||||
</metadata>
|
||||
<metadata name="controlToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>346, 17</value>
|
||||
</metadata>
|
||||
</root>
|
|
@ -1,24 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Xenia.Debug.UI {
|
||||
static class Program {
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread] static void Main() {
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new MainWindow());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Xenia.Debug.UI")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Xenia.Debug.UI")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("75a94ceb-442c-45b6-aeec-a5f16d4543f3")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
@ -1,123 +0,0 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.0
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Xenia.Debug.UI.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Xenia.Debug.UI.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap pause {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("pause", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap play {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("play", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap step_in {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("step_in", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap step_out {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("step_out", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap step_over {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("step_over", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap stop {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("stop", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,139 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="pause" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\pause.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="play" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="step_in" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\step_in.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="step_out" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\step_out.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="step_over" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\step_over.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="stop" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\stop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
|
@ -1,26 +0,0 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.0
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Xenia.Debug.UI.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
Binary file not shown.
Before Width: | Height: | Size: 297 B |
Binary file not shown.
Before Width: | Height: | Size: 355 B |
Binary file not shown.
Before Width: | Height: | Size: 824 B |
Binary file not shown.
Before Width: | Height: | Size: 824 B |
Binary file not shown.
Before Width: | Height: | Size: 824 B |
Binary file not shown.
Before Width: | Height: | Size: 410 B |
|
@ -1,67 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class BreakpointsPanel {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.breakpointsListView = new System.Windows.Forms.ListView();
|
||||
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// breakpointsListView
|
||||
//
|
||||
this.breakpointsListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.breakpointsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeader1,
|
||||
this.columnHeader2,
|
||||
this.columnHeader3});
|
||||
this.breakpointsListView.Location = new System.Drawing.Point(12, 12);
|
||||
this.breakpointsListView.Name = "breakpointsListView";
|
||||
this.breakpointsListView.Size = new System.Drawing.Size(738, 208);
|
||||
this.breakpointsListView.TabIndex = 0;
|
||||
this.breakpointsListView.UseCompatibleStateImageBehavior = false;
|
||||
this.breakpointsListView.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// BreakpointsPanel
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(762, 232);
|
||||
this.Controls.Add(this.breakpointsListView);
|
||||
this.Name = "BreakpointsPanel";
|
||||
this.Text = "Breakpoints";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ListView breakpointsListView;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader1;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader2;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader3;
|
||||
}
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class BreakpointsPanel : BasePanel {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public BreakpointsPanel(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
|
||||
debugger.BreakpointList.Changed += UpdateBreakpointsList;
|
||||
UpdateBreakpointsList(debugger.BreakpointList);
|
||||
}
|
||||
|
||||
private void UpdateBreakpointsList(BreakpointList sender) {
|
||||
breakpointsListView.BeginUpdate();
|
||||
breakpointsListView.Items.Clear();
|
||||
foreach (Breakpoint breakpoint in debugger.BreakpointList) {
|
||||
breakpointsListView.Items.Add("Breakpoint A");
|
||||
}
|
||||
breakpointsListView.EndUpdate();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,120 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -1,67 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class CallstackPanel {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.framesListView = new System.Windows.Forms.ListView();
|
||||
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// framesListView
|
||||
//
|
||||
this.framesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.framesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeader1,
|
||||
this.columnHeader2,
|
||||
this.columnHeader3});
|
||||
this.framesListView.Location = new System.Drawing.Point(12, 12);
|
||||
this.framesListView.Name = "framesListView";
|
||||
this.framesListView.Size = new System.Drawing.Size(735, 217);
|
||||
this.framesListView.TabIndex = 0;
|
||||
this.framesListView.UseCompatibleStateImageBehavior = false;
|
||||
this.framesListView.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// CallstackPanel
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(759, 241);
|
||||
this.Controls.Add(this.framesListView);
|
||||
this.Name = "CallstackPanel";
|
||||
this.Text = "Callstack";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ListView framesListView;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader1;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader2;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader3;
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class CallstackPanel : BasePanel {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public CallstackPanel(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,120 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -1,143 +0,0 @@
|
|||
using System;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
partial class CodeDocument {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.sourceTextBox = new System.Windows.Forms.TextBox();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.disasmMachineCodeCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.disasmOptimizedHirCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.disasmUnoptimizedHirCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.disasmPpcCheckBox = new System.Windows.Forms.CheckBox();
|
||||
this.panel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// sourceTextBox
|
||||
//
|
||||
this.sourceTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.sourceTextBox.Font = new System.Drawing.Font("Consolas", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.sourceTextBox.HideSelection = false;
|
||||
this.sourceTextBox.Location = new System.Drawing.Point(12, 75);
|
||||
this.sourceTextBox.MaxLength = 99999;
|
||||
this.sourceTextBox.Multiline = true;
|
||||
this.sourceTextBox.Name = "sourceTextBox";
|
||||
this.sourceTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||
this.sourceTextBox.Size = new System.Drawing.Size(740, 563);
|
||||
this.sourceTextBox.TabIndex = 0;
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.panel1.Controls.Add(this.disasmMachineCodeCheckBox);
|
||||
this.panel1.Controls.Add(this.disasmOptimizedHirCheckBox);
|
||||
this.panel1.Controls.Add(this.disasmUnoptimizedHirCheckBox);
|
||||
this.panel1.Controls.Add(this.disasmPpcCheckBox);
|
||||
this.panel1.Location = new System.Drawing.Point(12, 644);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(740, 17);
|
||||
this.panel1.TabIndex = 1;
|
||||
//
|
||||
// disasmMachineCodeCheckBox
|
||||
//
|
||||
this.disasmMachineCodeCheckBox.AutoSize = true;
|
||||
this.disasmMachineCodeCheckBox.Checked = true;
|
||||
this.disasmMachineCodeCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.disasmMachineCodeCheckBox.Location = new System.Drawing.Point(302, 0);
|
||||
this.disasmMachineCodeCheckBox.Name = "disasmMachineCodeCheckBox";
|
||||
this.disasmMachineCodeCheckBox.Size = new System.Drawing.Size(95, 17);
|
||||
this.disasmMachineCodeCheckBox.TabIndex = 3;
|
||||
this.disasmMachineCodeCheckBox.Text = "Machine Code";
|
||||
this.disasmMachineCodeCheckBox.UseVisualStyleBackColor = true;
|
||||
this.disasmMachineCodeCheckBox.CheckedChanged += new System.EventHandler(this.DisasmCheckBoxChanged);
|
||||
//
|
||||
// disasmOptimizedHirCheckBox
|
||||
//
|
||||
this.disasmOptimizedHirCheckBox.AutoSize = true;
|
||||
this.disasmOptimizedHirCheckBox.Checked = true;
|
||||
this.disasmOptimizedHirCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.disasmOptimizedHirCheckBox.Location = new System.Drawing.Point(202, 0);
|
||||
this.disasmOptimizedHirCheckBox.Name = "disasmOptimizedHirCheckBox";
|
||||
this.disasmOptimizedHirCheckBox.Size = new System.Drawing.Size(94, 17);
|
||||
this.disasmOptimizedHirCheckBox.TabIndex = 2;
|
||||
this.disasmOptimizedHirCheckBox.Text = "Optimized HIR";
|
||||
this.disasmOptimizedHirCheckBox.UseVisualStyleBackColor = true;
|
||||
this.disasmOptimizedHirCheckBox.CheckedChanged += new System.EventHandler(this.DisasmCheckBoxChanged);
|
||||
//
|
||||
// disasmUnoptimizedHirCheckBox
|
||||
//
|
||||
this.disasmUnoptimizedHirCheckBox.AutoSize = true;
|
||||
this.disasmUnoptimizedHirCheckBox.Checked = true;
|
||||
this.disasmUnoptimizedHirCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.disasmUnoptimizedHirCheckBox.Location = new System.Drawing.Point(90, 0);
|
||||
this.disasmUnoptimizedHirCheckBox.Name = "disasmUnoptimizedHirCheckBox";
|
||||
this.disasmUnoptimizedHirCheckBox.Size = new System.Drawing.Size(106, 17);
|
||||
this.disasmUnoptimizedHirCheckBox.TabIndex = 1;
|
||||
this.disasmUnoptimizedHirCheckBox.Text = "Unoptimized HIR";
|
||||
this.disasmUnoptimizedHirCheckBox.UseVisualStyleBackColor = true;
|
||||
this.disasmUnoptimizedHirCheckBox.CheckedChanged += new System.EventHandler(this.DisasmCheckBoxChanged);
|
||||
//
|
||||
// disasmPpcCheckBox
|
||||
//
|
||||
this.disasmPpcCheckBox.AutoSize = true;
|
||||
this.disasmPpcCheckBox.Checked = true;
|
||||
this.disasmPpcCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.disasmPpcCheckBox.Location = new System.Drawing.Point(0, 0);
|
||||
this.disasmPpcCheckBox.Name = "disasmPpcCheckBox";
|
||||
this.disasmPpcCheckBox.Size = new System.Drawing.Size(84, 17);
|
||||
this.disasmPpcCheckBox.TabIndex = 0;
|
||||
this.disasmPpcCheckBox.Text = "Source PPC";
|
||||
this.disasmPpcCheckBox.UseVisualStyleBackColor = true;
|
||||
this.disasmPpcCheckBox.CheckedChanged += new System.EventHandler(this.DisasmCheckBoxChanged);
|
||||
//
|
||||
// CodeDocument
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(764, 673);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Controls.Add(this.sourceTextBox);
|
||||
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.Name = "CodeDocument";
|
||||
this.Text = "Code";
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TextBox sourceTextBox;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.CheckBox disasmMachineCodeCheckBox;
|
||||
private System.Windows.Forms.CheckBox disasmOptimizedHirCheckBox;
|
||||
private System.Windows.Forms.CheckBox disasmUnoptimizedHirCheckBox;
|
||||
private System.Windows.Forms.CheckBox disasmPpcCheckBox;
|
||||
}
|
||||
}
|
|
@ -1,89 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class CodeDocument : BaseDocument {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
private Function function;
|
||||
|
||||
public CodeDocument(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
}
|
||||
|
||||
public async void Show(Function function) {
|
||||
this.function = function;
|
||||
|
||||
this.sourceTextBox.Text = "Loading...";
|
||||
await function.Invalidate();
|
||||
|
||||
UpdateSourceTextBox();
|
||||
}
|
||||
|
||||
private void UpdateSourceTextBox() {
|
||||
string combinedString = "";
|
||||
|
||||
if (disasmPpcCheckBox.Checked) {
|
||||
combinedString += "Source PPC" + Environment.NewLine;
|
||||
if (function.DisasmPpc != null) {
|
||||
combinedString += function.DisasmPpc;
|
||||
} else {
|
||||
combinedString += "(unavailable)";
|
||||
}
|
||||
combinedString += Environment.NewLine + Environment.NewLine;
|
||||
}
|
||||
if (disasmUnoptimizedHirCheckBox.Checked) {
|
||||
combinedString += "Unoptimized HIR" + Environment.NewLine;
|
||||
if (function.DisasmHirUnoptimized != null) {
|
||||
combinedString += function.DisasmHirUnoptimized;
|
||||
} else {
|
||||
combinedString += "(unavailable)";
|
||||
}
|
||||
combinedString += Environment.NewLine + Environment.NewLine;
|
||||
}
|
||||
if (disasmOptimizedHirCheckBox.Checked) {
|
||||
combinedString += "Optimized HIR" + Environment.NewLine;
|
||||
if (function.DisasmHirOptimized != null) {
|
||||
combinedString += function.DisasmHirOptimized;
|
||||
} else {
|
||||
combinedString += "(unavailable)";
|
||||
}
|
||||
combinedString += Environment.NewLine + Environment.NewLine;
|
||||
}
|
||||
if (disasmMachineCodeCheckBox.Checked) {
|
||||
combinedString += "Machine Code" + Environment.NewLine;
|
||||
if (function.DisasmMachineCode != null) {
|
||||
combinedString += function.DisasmMachineCode;
|
||||
} else {
|
||||
combinedString += "(unavailable)";
|
||||
}
|
||||
combinedString += Environment.NewLine + Environment.NewLine;
|
||||
}
|
||||
|
||||
this.sourceTextBox.Text = combinedString;
|
||||
}
|
||||
|
||||
private void DisasmCheckBoxChanged(object sender, EventArgs e) {
|
||||
UpdateSourceTextBox();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,120 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -1,33 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class FilesystemPanel {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Text = "Filesystem";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class FilesystemPanel : BasePanel {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public FilesystemPanel(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,89 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class FunctionsPanel {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.modulesComboBox = new System.Windows.Forms.ComboBox();
|
||||
this.filterTextBox = new System.Windows.Forms.TextBox();
|
||||
this.functionsListBox = new System.Windows.Forms.ListBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// modulesComboBox
|
||||
//
|
||||
this.modulesComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.modulesComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.modulesComboBox.FormattingEnabled = true;
|
||||
this.modulesComboBox.Location = new System.Drawing.Point(12, 12);
|
||||
this.modulesComboBox.Name = "modulesComboBox";
|
||||
this.modulesComboBox.Size = new System.Drawing.Size(234, 21);
|
||||
this.modulesComboBox.TabIndex = 0;
|
||||
this.modulesComboBox.SelectedIndexChanged += new System.EventHandler(this.modulesComboBox_SelectedIndexChanged);
|
||||
//
|
||||
// filterTextBox
|
||||
//
|
||||
this.filterTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.filterTextBox.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
|
||||
this.filterTextBox.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
|
||||
this.filterTextBox.Location = new System.Drawing.Point(12, 569);
|
||||
this.filterTextBox.Name = "filterTextBox";
|
||||
this.filterTextBox.Size = new System.Drawing.Size(234, 20);
|
||||
this.filterTextBox.TabIndex = 1;
|
||||
this.filterTextBox.TextChanged += new System.EventHandler(this.filterTextBox_TextChanged);
|
||||
//
|
||||
// functionsListBox
|
||||
//
|
||||
this.functionsListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.functionsListBox.FormattingEnabled = true;
|
||||
this.functionsListBox.Location = new System.Drawing.Point(12, 39);
|
||||
this.functionsListBox.Name = "functionsListBox";
|
||||
this.functionsListBox.Size = new System.Drawing.Size(234, 524);
|
||||
this.functionsListBox.TabIndex = 2;
|
||||
this.functionsListBox.SelectedIndexChanged += new System.EventHandler(this.functionsListBox_SelectedIndexChanged);
|
||||
//
|
||||
// FunctionsPanel
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(258, 600);
|
||||
this.Controls.Add(this.functionsListBox);
|
||||
this.Controls.Add(this.filterTextBox);
|
||||
this.Controls.Add(this.modulesComboBox);
|
||||
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.Name = "FunctionsPanel";
|
||||
this.Text = "Functions";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ComboBox modulesComboBox;
|
||||
private System.Windows.Forms.TextBox filterTextBox;
|
||||
private System.Windows.Forms.ListBox functionsListBox;
|
||||
}
|
||||
}
|
|
@ -1,110 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class FunctionsPanel : BasePanel {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public FunctionsPanel(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
|
||||
RefreshFunctionList();
|
||||
|
||||
debugger.ModuleList.Changed += UpdateModulesList;
|
||||
UpdateModulesList(debugger.ModuleList);
|
||||
}
|
||||
|
||||
private void UpdateModulesList(ModuleList sender) {
|
||||
modulesComboBox.BeginUpdate();
|
||||
modulesComboBox.Items.Clear();
|
||||
foreach (Module module in debugger.ModuleList) {
|
||||
modulesComboBox.Items.Add(module);
|
||||
module.Changed += Module_Changed;
|
||||
}
|
||||
modulesComboBox.EndUpdate();
|
||||
}
|
||||
|
||||
private void Module_Changed(KernelObject sender) {
|
||||
if (modulesComboBox.SelectedItem != sender) {
|
||||
return;
|
||||
}
|
||||
|
||||
RefreshFunctionList();
|
||||
}
|
||||
|
||||
private void modulesComboBox_SelectedIndexChanged(object sender, EventArgs e) {
|
||||
if (modulesComboBox.SelectedItem == null) {
|
||||
return;
|
||||
}
|
||||
var module = (Module)modulesComboBox.SelectedItem;
|
||||
|
||||
RefreshFunctionList();
|
||||
}
|
||||
|
||||
private void RefreshFunctionList() {
|
||||
if (modulesComboBox.SelectedItem == null) {
|
||||
functionsListBox.Items.Clear();
|
||||
functionsListBox.Enabled = false;
|
||||
filterTextBox.Enabled = false;
|
||||
return;
|
||||
}
|
||||
functionsListBox.Enabled = true;
|
||||
filterTextBox.Enabled = true;
|
||||
var module = (Module)modulesComboBox.SelectedItem;
|
||||
|
||||
functionsListBox.BeginUpdate();
|
||||
functionsListBox.Items.Clear();
|
||||
|
||||
foreach (Function function in module) {
|
||||
functionsListBox.Items.Add(function);
|
||||
}
|
||||
|
||||
functionsListBox.EndUpdate();
|
||||
}
|
||||
|
||||
private void filterTextBox_TextChanged(object sender, EventArgs e) {
|
||||
var module = (Module)modulesComboBox.SelectedItem;
|
||||
|
||||
var filter = filterTextBox.Text.ToLowerInvariant();
|
||||
|
||||
functionsListBox.BeginUpdate();
|
||||
functionsListBox.Items.Clear();
|
||||
|
||||
foreach (Function function in module) {
|
||||
if (filter.Length == 0 || function.LowerName.Contains(filter)) {
|
||||
functionsListBox.Items.Add(function);
|
||||
}
|
||||
}
|
||||
|
||||
functionsListBox.EndUpdate();
|
||||
}
|
||||
|
||||
private void functionsListBox_SelectedIndexChanged(object sender, EventArgs e) {
|
||||
var function = (Function)functionsListBox.SelectedItem;
|
||||
if (function == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
MainWindow.OpenFunction(function);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,120 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -1,33 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class HeapDocument {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Text = "Heap";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class HeapDocument : BaseDocument {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public HeapDocument(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class MemoryDocument {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Text = "Memory";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class MemoryDocument : BaseDocument {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public MemoryDocument(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,90 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class ModulesPanel {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
System.Windows.Forms.ColumnHeader columnHeader1;
|
||||
System.Windows.Forms.ColumnHeader columnHeader2;
|
||||
System.Windows.Forms.ColumnHeader columnHeader3;
|
||||
System.Windows.Forms.ColumnHeader columnHeader4;
|
||||
this.modulesListView = new System.Windows.Forms.ListView();
|
||||
columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
columnHeader4 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// modulesListView
|
||||
//
|
||||
this.modulesListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.modulesListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
columnHeader1,
|
||||
columnHeader2,
|
||||
columnHeader3,
|
||||
columnHeader4});
|
||||
this.modulesListView.Location = new System.Drawing.Point(12, 12);
|
||||
this.modulesListView.Name = "modulesListView";
|
||||
this.modulesListView.Size = new System.Drawing.Size(748, 206);
|
||||
this.modulesListView.TabIndex = 0;
|
||||
this.modulesListView.UseCompatibleStateImageBehavior = false;
|
||||
this.modulesListView.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// columnHeader1
|
||||
//
|
||||
columnHeader1.Text = "Handle";
|
||||
//
|
||||
// columnHeader2
|
||||
//
|
||||
columnHeader2.Text = "Type";
|
||||
columnHeader2.Width = 80;
|
||||
//
|
||||
// columnHeader3
|
||||
//
|
||||
columnHeader3.Text = "Name";
|
||||
columnHeader3.Width = 120;
|
||||
//
|
||||
// columnHeader4
|
||||
//
|
||||
columnHeader4.Text = "Path";
|
||||
columnHeader4.Width = 300;
|
||||
//
|
||||
// ModulesPanel
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(772, 230);
|
||||
this.Controls.Add(this.modulesListView);
|
||||
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.Name = "ModulesPanel";
|
||||
this.Text = "Modules";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ListView modulesListView;
|
||||
}
|
||||
}
|
|
@ -1,50 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class ModulesPanel : BasePanel {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public ModulesPanel(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
|
||||
debugger.ModuleList.Changed += UpdateModulesList;
|
||||
UpdateModulesList(debugger.ModuleList);
|
||||
}
|
||||
|
||||
private void UpdateModulesList(ModuleList sender) {
|
||||
modulesListView.BeginUpdate();
|
||||
modulesListView.Items.Clear();
|
||||
foreach (Module module in debugger.ModuleList) {
|
||||
var item = new ListViewItem(new string[]{
|
||||
module.Handle.ToString("X4"),
|
||||
module.ModuleType == xe.debug.proto.ModuleType.Kernel ? "Kernel"
|
||||
: "User",
|
||||
module.Name,
|
||||
module.Path,
|
||||
});
|
||||
modulesListView.Items.Add(item);
|
||||
}
|
||||
modulesListView.EndUpdate();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,132 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="columnHeader1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="columnHeader2.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="columnHeader3.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="columnHeader4.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
</root>
|
|
@ -1,33 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class ProfilePanel {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Text = "Profile";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class ProfilePanel : BasePanel {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public ProfilePanel(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class RegistersPanel {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Text = "Registers";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,62 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public enum RegisterClass {
|
||||
GuestGeneralPurpose,
|
||||
GuestFloatingPoint,
|
||||
GuestVector,
|
||||
HostGeneralPurpose,
|
||||
HostAvx,
|
||||
}
|
||||
|
||||
public partial class RegistersPanel : BasePanel {
|
||||
private readonly Debugger debugger;
|
||||
private readonly RegisterClass registerClass;
|
||||
|
||||
public RegistersPanel(Debugger debugger, RegisterClass registerClass) {
|
||||
InitializeComponent();
|
||||
|
||||
this.debugger = debugger;
|
||||
this.registerClass = registerClass;
|
||||
switch (registerClass) {
|
||||
case RegisterClass.GuestGeneralPurpose:
|
||||
this.Text = "GPR";
|
||||
break;
|
||||
case RegisterClass.GuestFloatingPoint:
|
||||
this.Text = "FPR";
|
||||
break;
|
||||
case RegisterClass.GuestVector:
|
||||
this.Text = "VR";
|
||||
break;
|
||||
case RegisterClass.HostGeneralPurpose:
|
||||
this.Text = "x64";
|
||||
break;
|
||||
case RegisterClass.HostAvx:
|
||||
this.Text = "AVX";
|
||||
break;
|
||||
default:
|
||||
System.Diagnostics.Debug.Fail("Unhandled case: " + registerClass);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class StatisticsDocument {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Text = "Statistics";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class StatisticsDocument : BaseDocument {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public StatisticsDocument(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,67 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class ThreadsPanel {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.threadsListView = new System.Windows.Forms.ListView();
|
||||
this.columnHeader1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// threadsListView
|
||||
//
|
||||
this.threadsListView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.threadsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
|
||||
this.columnHeader1,
|
||||
this.columnHeader2,
|
||||
this.columnHeader3});
|
||||
this.threadsListView.Location = new System.Drawing.Point(12, 12);
|
||||
this.threadsListView.Name = "threadsListView";
|
||||
this.threadsListView.Size = new System.Drawing.Size(731, 287);
|
||||
this.threadsListView.TabIndex = 1;
|
||||
this.threadsListView.UseCompatibleStateImageBehavior = false;
|
||||
this.threadsListView.View = System.Windows.Forms.View.Details;
|
||||
//
|
||||
// ThreadsPanel
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(755, 311);
|
||||
this.Controls.Add(this.threadsListView);
|
||||
this.Name = "ThreadsPanel";
|
||||
this.Text = "Threads";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ListView threadsListView;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader1;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader2;
|
||||
private System.Windows.Forms.ColumnHeader columnHeader3;
|
||||
}
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class ThreadsPanel : BasePanel {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public ThreadsPanel(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
|
||||
debugger.ThreadList.Changed += UpdateThreadList;
|
||||
UpdateThreadList(debugger.ThreadList);
|
||||
}
|
||||
|
||||
private void UpdateThreadList(ThreadList sender) {
|
||||
threadsListView.BeginUpdate();
|
||||
threadsListView.Items.Clear();
|
||||
foreach (Thread thread in debugger.ThreadList) {
|
||||
threadsListView.Items.Add("Thread A");
|
||||
}
|
||||
threadsListView.EndUpdate();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,120 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -1,33 +0,0 @@
|
|||
namespace Xenia.Debug.UI.Views {
|
||||
partial class TracePanel {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Text = "Trace";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
using Xenia.Debug.UI.Controls;
|
||||
|
||||
namespace Xenia.Debug.UI.Views {
|
||||
public partial class TracePanel : BasePanel {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public TracePanel(Debugger debugger) {
|
||||
InitializeComponent();
|
||||
this.debugger = debugger;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,225 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{75A94CEB-442C-45B6-AEEC-A5F16D4543F3}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Xenia.Debug.UI</RootNamespace>
|
||||
<AssemblyName>Xenia.Debug.UI</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>..\..\build\bin\Debug\</OutputPath>
|
||||
<IntermediateOutputPath>..\..\build\obj\Debug\</IntermediateOutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
|
||||
<OutputPath>..\..\build\bin\Release\</OutputPath>
|
||||
<IntermediateOutputPath>..\..\build\obj\Release\</IntermediateOutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject>Xenia.Debug.UI.Program</StartupObject>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Controls\BaseDocument.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\BaseDocument.Designer.cs">
|
||||
<DependentUpon>BaseDocument.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Controls\BasePanel.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\BasePanel.Designer.cs">
|
||||
<DependentUpon>BasePanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MainWindow.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MainWindow.Designer.cs">
|
||||
<DependentUpon>MainWindow.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Views\BreakpointsPanel.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\BreakpointsPanel.Designer.cs">
|
||||
<DependentUpon>BreakpointsPanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\CallstackPanel.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\CallstackPanel.Designer.cs">
|
||||
<DependentUpon>CallstackPanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\CodeDocument.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\CodeDocument.Designer.cs">
|
||||
<DependentUpon>CodeDocument.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\FilesystemPanel.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\FilesystemPanel.Designer.cs">
|
||||
<DependentUpon>FilesystemPanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\FunctionsPanel.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\FunctionsPanel.Designer.cs">
|
||||
<DependentUpon>FunctionsPanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\HeapDocument.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\HeapDocument.Designer.cs">
|
||||
<DependentUpon>HeapDocument.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\MemoryDocument.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\MemoryDocument.Designer.cs">
|
||||
<DependentUpon>MemoryDocument.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\ModulesPanel.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\ModulesPanel.Designer.cs">
|
||||
<DependentUpon>ModulesPanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\ProfilePanel.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\ProfilePanel.Designer.cs">
|
||||
<DependentUpon>ProfilePanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\RegistersPanel.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\RegistersPanel.Designer.cs">
|
||||
<DependentUpon>RegistersPanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\StatisticsDocument.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\StatisticsDocument.Designer.cs">
|
||||
<DependentUpon>StatisticsDocument.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\ThreadsPanel.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\ThreadsPanel.Designer.cs">
|
||||
<DependentUpon>ThreadsPanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\TracePanel.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\TracePanel.Designer.cs">
|
||||
<DependentUpon>TracePanel.cs</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="MainWindow.resx">
|
||||
<DependentUpon>MainWindow.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Views\BreakpointsPanel.resx">
|
||||
<DependentUpon>BreakpointsPanel.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Views\CallstackPanel.resx">
|
||||
<DependentUpon>CallstackPanel.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Views\CodeDocument.resx">
|
||||
<DependentUpon>CodeDocument.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Views\FunctionsPanel.resx">
|
||||
<DependentUpon>FunctionsPanel.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Views\ModulesPanel.resx">
|
||||
<DependentUpon>ModulesPanel.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Views\ThreadsPanel.resx">
|
||||
<DependentUpon>ThreadsPanel.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\third_party\dockpanelsuite\WinFormsUI\WinFormsUI.csproj">
|
||||
<Project>{c75532c4-765b-418e-b09b-46d36b2abdb1}</Project>
|
||||
<Name>WinFormsUI</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Xenia.Debug\Xenia.Debug.csproj">
|
||||
<Project>{58348c66-1b0d-497c-b51a-28e99df1ef74}</Project>
|
||||
<Name>Xenia.Debug</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Resources\pause.png" />
|
||||
<Content Include="Resources\play.png" />
|
||||
<Content Include="Resources\step_in.bmp" />
|
||||
<Content Include="Resources\step_out.bmp" />
|
||||
<Content Include="Resources\step_over.bmp" />
|
||||
<Content Include="Resources\stop.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
|
@ -1,28 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Xenia.Debug.Utilities;
|
||||
|
||||
namespace Xenia.Debug {
|
||||
public class Breakpoint : Changeable<Breakpoint> {
|
||||
// type code/data/kernel
|
||||
// address+[end address]
|
||||
// conditions? script?
|
||||
// action (suspend, trace, etc)
|
||||
|
||||
public Breakpoint() {
|
||||
this.self = this;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Xenia.Debug.Utilities;
|
||||
|
||||
namespace Xenia.Debug {
|
||||
public class BreakpointList : Changeable<BreakpointList>, IReadOnlyCollection<Breakpoint> {
|
||||
private readonly Debugger debugger;
|
||||
private readonly List<Breakpoint> breakpoints = new List<Breakpoint>();
|
||||
|
||||
public BreakpointList(Debugger debugger) {
|
||||
this.self = this;
|
||||
this.debugger = debugger;
|
||||
}
|
||||
|
||||
public int Count {
|
||||
get {
|
||||
return breakpoints.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerator<Breakpoint> GetEnumerator() {
|
||||
return breakpoints.GetEnumerator();
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator() {
|
||||
return breakpoints.GetEnumerator();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Xenia.Debug {
|
||||
public class Callstack {
|
||||
public class Frame {
|
||||
// function
|
||||
// address
|
||||
// stack pointer
|
||||
// possible to get args?
|
||||
}
|
||||
|
||||
// thread
|
||||
// frames
|
||||
}
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Xenia.Debug.Utilities;
|
||||
|
||||
namespace Xenia.Debug {
|
||||
public enum RunState {
|
||||
Updating,
|
||||
Running,
|
||||
Paused,
|
||||
}
|
||||
|
||||
public class Context : Changeable<Context> {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
public Context(Debugger debugger) {
|
||||
this.self = this;
|
||||
this.debugger = debugger;
|
||||
}
|
||||
|
||||
public RunState RunState {
|
||||
get; private set;
|
||||
}
|
||||
|
||||
public void SetRunState(RunState runState) {
|
||||
if (RunState == runState) {
|
||||
return;
|
||||
}
|
||||
RunState = runState;
|
||||
OnChanged();
|
||||
}
|
||||
|
||||
public uint CurrentThreadId {
|
||||
get; private set;
|
||||
}
|
||||
|
||||
public void SetThreadId(uint threadId) {
|
||||
if (CurrentThreadId == threadId) {
|
||||
return;
|
||||
}
|
||||
CurrentThreadId = threadId;
|
||||
OnChanged();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,401 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using FlatBuffers;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using xe.debug.proto;
|
||||
using Xenia.Debug.Utilities;
|
||||
|
||||
namespace Xenia.Debug {
|
||||
public class Debugger {
|
||||
private readonly static string kServerHostname = "";
|
||||
private readonly static int kServerPort = 19000;
|
||||
|
||||
public enum State {
|
||||
Idle,
|
||||
Attaching,
|
||||
Attached,
|
||||
Detached,
|
||||
}
|
||||
|
||||
private class PendingRequest {
|
||||
public uint requestId;
|
||||
public ByteBuffer byteBuffer;
|
||||
public TaskCompletionSource<Response> responseTask;
|
||||
}
|
||||
|
||||
private Socket socket;
|
||||
private readonly ConcurrentDictionary<uint, PendingRequest>
|
||||
pendingRequests = new ConcurrentDictionary<uint, PendingRequest>();
|
||||
private uint nextRequestId = 1;
|
||||
|
||||
private FileMappingHandle memoryHandle;
|
||||
private FileMappingHandle codeCacheHandle;
|
||||
private IntPtr codeCachePtr;
|
||||
|
||||
public unsafe byte* TranslateVirtual(uint address) {
|
||||
return (byte*)Memory.VirtualMembase.ToPointer() + address;
|
||||
}
|
||||
|
||||
public unsafe byte* TranslatePhysical(uint address) {
|
||||
return (byte*)Memory.PhysicalMembase.ToPointer() + 0xFFFFFFFF + address;
|
||||
}
|
||||
|
||||
public event EventHandler<State> StateChanged;
|
||||
|
||||
public State CurrentState {
|
||||
get; private set;
|
||||
}
|
||||
= State.Idle;
|
||||
|
||||
public readonly Context CurrentContext;
|
||||
|
||||
public readonly BreakpointList BreakpointList;
|
||||
public readonly Memory Memory;
|
||||
public readonly ModuleList ModuleList;
|
||||
public readonly ThreadList ThreadList;
|
||||
|
||||
public Debugger(AsyncTaskRunner asyncTaskRunner) {
|
||||
Dispatch.AsyncTaskRunner = asyncTaskRunner;
|
||||
|
||||
this.BreakpointList = new BreakpointList(this);
|
||||
this.Memory = new Memory(this);
|
||||
this.ModuleList = new ModuleList(this);
|
||||
this.ThreadList = new ThreadList(this);
|
||||
|
||||
this.CurrentContext = new Context(this);
|
||||
}
|
||||
|
||||
public Task Attach() {
|
||||
return Attach(CancellationToken.None);
|
||||
}
|
||||
|
||||
public async Task Attach(CancellationToken cancellationToken) {
|
||||
System.Diagnostics.Debug.Assert(CurrentState == State.Idle);
|
||||
|
||||
SocketPermission permission = new SocketPermission(
|
||||
NetworkAccess.Connect,
|
||||
TransportType.Tcp,
|
||||
kServerHostname,
|
||||
kServerPort);
|
||||
permission.Demand();
|
||||
|
||||
IPAddress ipAddress = new IPAddress(new byte[] { 127, 0, 0, 1 });
|
||||
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, kServerPort);
|
||||
|
||||
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
|
||||
ProtocolType.Tcp);
|
||||
socket.Blocking = false;
|
||||
socket.NoDelay = true;
|
||||
socket.ReceiveBufferSize = 1024 * 1024;
|
||||
socket.SendBufferSize = 1024 * 1024;
|
||||
socket.ReceiveTimeout = 0;
|
||||
socket.SendTimeout = 0;
|
||||
|
||||
OnStateChanged(State.Attaching);
|
||||
|
||||
while (true) {
|
||||
Task task = Task.Factory.FromAsync(socket.BeginConnect, socket.EndConnect, ipEndPoint, null);
|
||||
try {
|
||||
await task.WithCancellation(cancellationToken);
|
||||
} catch (OperationCanceledException) {
|
||||
socket.Close();
|
||||
socket = null;
|
||||
OnStateChanged(State.Idle);
|
||||
return;
|
||||
} catch (SocketException e) {
|
||||
if (e.SocketErrorCode == SocketError.ConnectionRefused) {
|
||||
// Not found - emulator may still be starting.
|
||||
System.Diagnostics.Debug.WriteLine("Connection refused; trying again...");
|
||||
continue;
|
||||
}
|
||||
OnStateChanged(State.Idle);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// Start recv pump.
|
||||
Dispatch.Issue(() => ReceivePump());
|
||||
|
||||
var fbb = BeginRequest();
|
||||
AttachRequest.StartAttachRequest(fbb);
|
||||
int requestDataOffset = AttachRequest.EndAttachRequest(fbb);
|
||||
var response = await CommitRequest(fbb, RequestData.AttachRequest, requestDataOffset);
|
||||
|
||||
System.Diagnostics.Debug.Assert(response.ResponseDataType ==
|
||||
ResponseData.AttachResponse);
|
||||
var attachResponse = new AttachResponse();
|
||||
response.GetResponseData(attachResponse);
|
||||
|
||||
// Open mmap to share memory.
|
||||
memoryHandle = FileMapping.OpenFileMapping(
|
||||
FileMapAccess.FILE_MAP_ALL_ACCESS, false, attachResponse.MemoryFile);
|
||||
if (memoryHandle.IsInvalid) {
|
||||
System.Diagnostics.Debug.Fail("Unable to open target memory");
|
||||
Detach();
|
||||
return;
|
||||
}
|
||||
|
||||
// Open mmap to code cache.
|
||||
codeCacheHandle =
|
||||
FileMapping.OpenFileMapping(FileMapAccess.FILE_MAP_ALL_ACCESS, false,
|
||||
attachResponse.CodeCacheFile);
|
||||
if (codeCacheHandle.IsInvalid) {
|
||||
System.Diagnostics.Debug.Fail("Unable to open target code cache");
|
||||
Detach();
|
||||
return;
|
||||
}
|
||||
codeCachePtr = FileMapping.MapViewOfFileEx(
|
||||
codeCacheHandle, FileMapAccess.FILE_MAP_ALL_ACCESS, 0, 0,
|
||||
attachResponse.CodeCacheSize, attachResponse.CodeCacheBase);
|
||||
|
||||
// Setup the memory system. This maps the emulator memory into our address
|
||||
// space.
|
||||
if (!Memory.InitializeMapping(memoryHandle)) {
|
||||
Detach();
|
||||
return;
|
||||
}
|
||||
|
||||
OnStateChanged(State.Attached);
|
||||
}
|
||||
|
||||
public void Detach() {
|
||||
if (CurrentState == State.Idle || CurrentState == State.Detached) {
|
||||
return;
|
||||
}
|
||||
|
||||
Memory.UninitializeMapping();
|
||||
|
||||
if (codeCacheHandle != null) {
|
||||
FileMapping.UnmapViewOfFile(codeCachePtr);
|
||||
codeCacheHandle.Close();
|
||||
codeCacheHandle = null;
|
||||
}
|
||||
if (memoryHandle != null) {
|
||||
memoryHandle.Close();
|
||||
memoryHandle = null;
|
||||
}
|
||||
|
||||
if (socket != null) {
|
||||
socket.Close();
|
||||
socket = null;
|
||||
}
|
||||
|
||||
OnStateChanged(State.Detached);
|
||||
}
|
||||
|
||||
private async void ReceivePump() {
|
||||
// Read length.
|
||||
var lengthBuffer = new byte[4];
|
||||
int receiveLength;
|
||||
try {
|
||||
receiveLength = await Task.Factory.FromAsync(
|
||||
(callback, state) => socket.BeginReceive(lengthBuffer, 0, lengthBuffer.Length,
|
||||
SocketFlags.None, callback, state),
|
||||
asyncResult => socket.EndReceive(asyncResult), null);
|
||||
} catch (SocketException) {
|
||||
System.Diagnostics.Debug.WriteLine("Socket read error; detaching");
|
||||
Detach();
|
||||
return;
|
||||
}
|
||||
if (receiveLength == 0 || receiveLength != 4) {
|
||||
// Failed?
|
||||
ReceivePump();
|
||||
return;
|
||||
}
|
||||
var length = BitConverter.ToInt32(lengthBuffer, 0);
|
||||
|
||||
// Read body.
|
||||
var bodyBuffer = new byte[length];
|
||||
int bodyOffset = 0;
|
||||
while (bodyOffset != bodyBuffer.Length) {
|
||||
receiveLength = await Task.Factory.FromAsync(
|
||||
(callback, state) => socket.BeginReceive(
|
||||
bodyBuffer, bodyOffset, bodyBuffer.Length - bodyOffset,
|
||||
SocketFlags.None, callback, state),
|
||||
asyncResult => socket.EndReceive(asyncResult), null);
|
||||
if (receiveLength == 0) {
|
||||
// Failed?
|
||||
ReceivePump();
|
||||
return;
|
||||
}
|
||||
bodyOffset += receiveLength;
|
||||
}
|
||||
|
||||
// Emit message.
|
||||
OnMessageReceived(bodyBuffer);
|
||||
|
||||
// Continue pumping.
|
||||
Dispatch.Issue(() => ReceivePump());
|
||||
}
|
||||
|
||||
private void OnMessageReceived(byte[] buffer) {
|
||||
ByteBuffer byteBuffer = new ByteBuffer(buffer);
|
||||
var response = Response.GetRootAsResponse(byteBuffer);
|
||||
if (response.Id != 0) {
|
||||
// Response.
|
||||
PendingRequest pendingRequest;
|
||||
if (!pendingRequests.TryRemove(response.Id, out pendingRequest)) {
|
||||
System.Diagnostics.Debug.WriteLine("Unexpected message from debug server?");
|
||||
return;
|
||||
}
|
||||
pendingRequest.byteBuffer = byteBuffer;
|
||||
pendingRequest.responseTask.SetResult(response);
|
||||
} else {
|
||||
// Event.
|
||||
// TODO(benvanik): events.
|
||||
}
|
||||
}
|
||||
|
||||
public FlatBufferBuilder BeginRequest() {
|
||||
var fbb = new FlatBufferBuilder(32 * 1024);
|
||||
return fbb;
|
||||
}
|
||||
|
||||
public async Task<Response> CommitRequest(FlatBufferBuilder fbb,
|
||||
RequestData requestDataType,
|
||||
int requestDataOffset) {
|
||||
PendingRequest request = new PendingRequest();
|
||||
request.requestId = nextRequestId++;
|
||||
request.responseTask = new TaskCompletionSource<Response>();
|
||||
pendingRequests.TryAdd(request.requestId, request);
|
||||
|
||||
int requestOffset =
|
||||
Request.CreateRequest(fbb, request.requestId,
|
||||
requestDataType, requestDataOffset);
|
||||
fbb.Finish(requestOffset);
|
||||
|
||||
// Update the placeholder size.
|
||||
int bufferOffset = fbb.DataBuffer.Position;
|
||||
int bufferLength = fbb.DataBuffer.Length - fbb.DataBuffer.Position;
|
||||
fbb.DataBuffer.PutInt(bufferOffset - 4, bufferLength);
|
||||
|
||||
// Send request.
|
||||
await socket.SendTaskAsync(fbb.DataBuffer.Data, bufferOffset - 4,
|
||||
bufferLength + 4, SocketFlags.None);
|
||||
|
||||
// Await response.
|
||||
var response = await request.responseTask.Task;
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
private void OnStateChanged(State newState) {
|
||||
if (newState == CurrentState) {
|
||||
return;
|
||||
}
|
||||
CurrentState = newState;
|
||||
if (StateChanged != null) {
|
||||
StateChanged(this, newState);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task BeginRunStateTransition() {
|
||||
CurrentContext.SetRunState(RunState.Updating);
|
||||
await Task.FromResult<int>(0);
|
||||
}
|
||||
|
||||
private async Task CompleteRunStateTransition(RunState newRunState) {
|
||||
await Task.WhenAll(new Task[] {
|
||||
ModuleList.Invalidate(),
|
||||
ThreadList.Invalidate(),
|
||||
});
|
||||
|
||||
CurrentContext.SetRunState(newRunState);
|
||||
}
|
||||
|
||||
public async Task<StopResponse> Stop() {
|
||||
await BeginRunStateTransition();
|
||||
var fbb = BeginRequest();
|
||||
StopRequest.StartStopRequest(fbb);
|
||||
int requestDataOffset = StopRequest.EndStopRequest(fbb);
|
||||
var response = await CommitRequest(fbb, RequestData.StopRequest, requestDataOffset);
|
||||
System.Diagnostics.Debug.Assert(response.ResponseDataType ==
|
||||
ResponseData.StopResponse);
|
||||
var stopResponse = new StopResponse();
|
||||
response.GetResponseData(stopResponse);
|
||||
await CompleteRunStateTransition(RunState.Paused);
|
||||
return stopResponse;
|
||||
}
|
||||
|
||||
public async Task<BreakResponse> Break() {
|
||||
await BeginRunStateTransition();
|
||||
var fbb = BeginRequest();
|
||||
BreakRequest.StartBreakRequest(fbb);
|
||||
int requestDataOffset = BreakRequest.EndBreakRequest(fbb);
|
||||
var response = await CommitRequest(fbb, RequestData.BreakRequest, requestDataOffset);
|
||||
System.Diagnostics.Debug.Assert(response.ResponseDataType ==
|
||||
ResponseData.BreakResponse);
|
||||
var breakResponse = new BreakResponse();
|
||||
response.GetResponseData(breakResponse);
|
||||
await CompleteRunStateTransition(RunState.Paused);
|
||||
return breakResponse;
|
||||
}
|
||||
|
||||
public async Task<ContinueResponse> Continue() {
|
||||
await BeginRunStateTransition();
|
||||
var fbb = BeginRequest();
|
||||
int requestDataOffset = ContinueRequest.CreateContinueRequest(fbb, ContinueAction.Continue, 0);
|
||||
var response = await CommitRequest(fbb, RequestData.ContinueRequest, requestDataOffset);
|
||||
System.Diagnostics.Debug.Assert(response.ResponseDataType ==
|
||||
ResponseData.ContinueResponse);
|
||||
var continueResponse = new ContinueResponse();
|
||||
response.GetResponseData(continueResponse);
|
||||
await CompleteRunStateTransition(RunState.Running);
|
||||
return continueResponse;
|
||||
}
|
||||
|
||||
public async Task<ContinueResponse> ContinueTo(uint targetAddress) {
|
||||
await BeginRunStateTransition();
|
||||
var fbb = BeginRequest();
|
||||
int requestDataOffset = ContinueRequest.CreateContinueRequest(fbb, ContinueAction.ContinueTo, targetAddress);
|
||||
var response = await CommitRequest(fbb, RequestData.ContinueRequest, requestDataOffset);
|
||||
System.Diagnostics.Debug.Assert(response.ResponseDataType ==
|
||||
ResponseData.ContinueResponse);
|
||||
var continueResponse = new ContinueResponse();
|
||||
response.GetResponseData(continueResponse);
|
||||
await CompleteRunStateTransition(RunState.Running);
|
||||
return continueResponse;
|
||||
}
|
||||
|
||||
public async Task<StepResponse> StepIn() {
|
||||
return await Step(StepAction.StepIn, CurrentContext.CurrentThreadId);
|
||||
}
|
||||
|
||||
public async Task<StepResponse> StepOver() {
|
||||
return await Step(StepAction.StepOver, CurrentContext.CurrentThreadId);
|
||||
}
|
||||
|
||||
public async Task<StepResponse> StepOut() {
|
||||
return await Step(StepAction.StepOut, CurrentContext.CurrentThreadId);
|
||||
}
|
||||
|
||||
private async Task<StepResponse> Step(StepAction stepAction, uint threadId) {
|
||||
await BeginRunStateTransition();
|
||||
var fbb = BeginRequest();
|
||||
int requestDataOffset = StepRequest.CreateStepRequest(fbb, stepAction, threadId);
|
||||
var response = await CommitRequest(fbb, RequestData.StepRequest, requestDataOffset);
|
||||
System.Diagnostics.Debug.Assert(response.ResponseDataType ==
|
||||
ResponseData.StepResponse);
|
||||
var stepResponse = new StepResponse();
|
||||
response.GetResponseData(stepResponse);
|
||||
await CompleteRunStateTransition(RunState.Paused);
|
||||
return stepResponse;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,153 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using xe.debug.proto;
|
||||
using Xenia.Debug.Utilities;
|
||||
|
||||
namespace Xenia.Debug {
|
||||
public class Function : Changeable<Function> {
|
||||
private static Native.Disassembler disassembler = new Native.Disassembler();
|
||||
|
||||
// status: declared, defined, failed
|
||||
// behavior: default, prolog, epilog, epilog_return, extern
|
||||
// extern info?
|
||||
|
||||
public readonly Debugger Debugger;
|
||||
public readonly Module Module;
|
||||
public readonly ulong Identifier;
|
||||
public readonly uint AddressStart;
|
||||
public uint AddressEnd {
|
||||
get; private set;
|
||||
}
|
||||
|
||||
public uint MachineCodeStart {
|
||||
get; private set;
|
||||
}
|
||||
public uint MachineCodeEnd {
|
||||
get; private set;
|
||||
}
|
||||
|
||||
// source map
|
||||
|
||||
// disasm:
|
||||
// source
|
||||
// raw hir
|
||||
// hir
|
||||
// machine code
|
||||
|
||||
// trace data:
|
||||
// intptr into file mapping
|
||||
// function_thread_use bitmask
|
||||
// call count
|
||||
// caller history
|
||||
// instruction execution counts
|
||||
|
||||
private string disasmPpc;
|
||||
public unsafe string DisasmPpc {
|
||||
get {
|
||||
if (disasmPpc != null) {
|
||||
return disasmPpc;
|
||||
}
|
||||
if (AddressEnd == 0) {
|
||||
return "(unavailable)";
|
||||
}
|
||||
disasmPpc = disassembler.DisassemblePPC(
|
||||
new IntPtr(Debugger.TranslateVirtual(AddressStart)),
|
||||
AddressEnd - AddressStart + 4);
|
||||
return disasmPpc;
|
||||
}
|
||||
}
|
||||
|
||||
public string DisasmHirUnoptimized {
|
||||
get; private set;
|
||||
}
|
||||
public string DisasmHirOptimized {
|
||||
get; private set;
|
||||
}
|
||||
|
||||
private string disasmMachineCode;
|
||||
public string DisasmMachineCode {
|
||||
get {
|
||||
if (disasmMachineCode != null) {
|
||||
return disasmMachineCode;
|
||||
}
|
||||
if (MachineCodeStart == 0) {
|
||||
return null;
|
||||
}
|
||||
disasmMachineCode = disassembler.DisassembleX64(
|
||||
new IntPtr(MachineCodeStart), MachineCodeEnd - MachineCodeStart + 1);
|
||||
disasmMachineCode = disasmMachineCode.Replace("\n", "\r\n");
|
||||
return disasmMachineCode;
|
||||
}
|
||||
}
|
||||
|
||||
public Function(Debugger debugger, Module module, xe.debug.proto.FunctionEntry functionEntry) {
|
||||
this.self = this;
|
||||
this.Debugger = debugger;
|
||||
this.Module = module;
|
||||
Identifier = functionEntry.Identifier;
|
||||
AddressStart = functionEntry.AddressStart;
|
||||
AddressEnd = functionEntry.AddressEnd;
|
||||
Name = functionEntry.Name;
|
||||
}
|
||||
|
||||
private string name;
|
||||
public string Name {
|
||||
get {
|
||||
return name;
|
||||
}
|
||||
set {
|
||||
name = value;
|
||||
if (value == null) {
|
||||
name = "sub_" + AddressStart.ToString("X8");
|
||||
}
|
||||
LowerName = name.ToLowerInvariant();
|
||||
}
|
||||
}
|
||||
public string LowerName {
|
||||
get; set;
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return Name;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Xenia.Debug.Utilities;
|
||||
|
||||
namespace Xenia.Debug {
|
||||
public class KernelObject : Changeable<KernelObject> {
|
||||
public readonly Debugger Debugger;
|
||||
public readonly uint Handle;
|
||||
|
||||
public KernelObject(Debugger debugger, uint handle) {
|
||||
this.self = this;
|
||||
this.Debugger = debugger;
|
||||
this.Handle = handle;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,115 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Xenia.Debug.Utilities;
|
||||
|
||||
namespace Xenia.Debug {
|
||||
public class Memory : Changeable<Memory>, IDisposable {
|
||||
private readonly Debugger debugger;
|
||||
|
||||
private class MapInfo {
|
||||
public ulong virtualAddressStart;
|
||||
public ulong virtualAddressEnd;
|
||||
public ulong targetAddress;
|
||||
public IntPtr ptr;
|
||||
}
|
||||
private MapInfo[] mapInfos = new MapInfo[]{
|
||||
// From memory.cc:
|
||||
new MapInfo(){virtualAddressStart = 0x00000000, virtualAddressEnd = 0x3FFFFFFF,
|
||||
targetAddress = 0x0000000000000000},
|
||||
new MapInfo(){virtualAddressStart = 0x40000000, virtualAddressEnd = 0x7EFFFFFF,
|
||||
targetAddress = 0x0000000040000000},
|
||||
new MapInfo(){virtualAddressStart = 0x7F000000, virtualAddressEnd = 0x7FFFFFFF,
|
||||
targetAddress = 0x0000000100000000},
|
||||
new MapInfo(){virtualAddressStart = 0x80000000, virtualAddressEnd = 0x8FFFFFFF,
|
||||
targetAddress = 0x0000000080000000},
|
||||
new MapInfo(){virtualAddressStart = 0x90000000, virtualAddressEnd = 0x9FFFFFFF,
|
||||
targetAddress = 0x0000000080000000},
|
||||
new MapInfo(){virtualAddressStart = 0xA0000000, virtualAddressEnd = 0xBFFFFFFF,
|
||||
targetAddress = 0x0000000100000000},
|
||||
new MapInfo(){virtualAddressStart = 0xC0000000, virtualAddressEnd = 0xDFFFFFFF,
|
||||
targetAddress = 0x0000000100000000},
|
||||
new MapInfo(){virtualAddressStart = 0xE0000000, virtualAddressEnd = 0xFFFFFFFF,
|
||||
targetAddress = 0x0000000100000000},
|
||||
new MapInfo(){virtualAddressStart = 0x100000000, virtualAddressEnd = 0x11FFFFFFF,
|
||||
targetAddress = 0x0000000100000000},
|
||||
};
|
||||
|
||||
public UIntPtr VirtualMembase;
|
||||
public UIntPtr PhysicalMembase;
|
||||
|
||||
public Memory(Debugger debugger) {
|
||||
this.self = this;
|
||||
this.debugger = debugger;
|
||||
}
|
||||
|
||||
public bool InitializeMapping(FileMappingHandle mappingHandle) {
|
||||
ulong mappingBase = 0x100000000;
|
||||
foreach (MapInfo mapInfo in mapInfos) {
|
||||
uint targetAddressLow = (uint)mapInfo.targetAddress;
|
||||
uint targetAddressHigh = (uint)(mapInfo.targetAddress >> 32);
|
||||
mapInfo.ptr = FileMapping.MapViewOfFileEx(
|
||||
mappingHandle, FileMapAccess.FILE_MAP_ALL_ACCESS,
|
||||
targetAddressHigh, targetAddressLow,
|
||||
mapInfo.virtualAddressEnd - mapInfo.virtualAddressStart + 1,
|
||||
mappingBase + mapInfo.virtualAddressStart);
|
||||
if (mapInfo.ptr == IntPtr.Zero) {
|
||||
System.Diagnostics.Debug.Fail("Unable to place memory at target address");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
VirtualMembase = new UIntPtr(mappingBase);
|
||||
PhysicalMembase = new UIntPtr(mappingBase + 0x100000000);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void UninitializeMapping() {
|
||||
foreach (MapInfo mapInfo in mapInfos) {
|
||||
FileMapping.UnmapViewOfFile(mapInfo.ptr);
|
||||
mapInfo.ptr = IntPtr.Zero;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDispose() {
|
||||
UninitializeMapping();
|
||||
}
|
||||
|
||||
public MemoryView CreateView() {
|
||||
return new MemoryView(this);
|
||||
}
|
||||
|
||||
#region Dispose
|
||||
private bool disposed = false;
|
||||
|
||||
~Memory() {
|
||||
Dispose(false);
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
protected virtual void Dispose(bool disposing) {
|
||||
if (!disposed) {
|
||||
if (disposing) {
|
||||
// TODO: dispose managed state (managed objects).
|
||||
}
|
||||
OnDispose();
|
||||
disposed = true;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Xenia.Debug.Utilities;
|
||||
|
||||
namespace Xenia.Debug {
|
||||
public class MemoryView : Changeable<MemoryView> {
|
||||
private readonly Memory memory;
|
||||
|
||||
public MemoryView(Memory memory) {
|
||||
this.self = this;
|
||||
this.memory = memory;
|
||||
}
|
||||
|
||||
// startAddress
|
||||
// endAddress
|
||||
|
||||
// padding: 2 64k pages on each side?
|
||||
// history (last N snapshots)
|
||||
// snapshot on break, or manually
|
||||
|
||||
// colored: text on modification
|
||||
// bg on heap alloc #
|
||||
// focus details: protection, region, allocation
|
||||
// stacks for all allocations
|
||||
}
|
||||
}
|
|
@ -1,126 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using xe.debug.proto;
|
||||
using Xenia.Debug.Utilities;
|
||||
|
||||
namespace Xenia.Debug {
|
||||
public class Module : KernelObject, IReadOnlyCollection<Function> {
|
||||
private bool hasFetched = false;
|
||||
private uint functionCount = 0;
|
||||
private readonly List<Function> functions = new List<Function>();
|
||||
|
||||
public Module(Debugger debugger, uint moduleHandle) : base(debugger, moduleHandle) {
|
||||
}
|
||||
|
||||
public async Task Invalidate(uint newFunctionCount) {
|
||||
if (hasFetched && newFunctionCount == functionCount) {
|
||||
// No-op.
|
||||
return;
|
||||
}
|
||||
|
||||
var pendingTasks = new List<Task>();
|
||||
|
||||
if (!hasFetched) {
|
||||
pendingTasks.Add(InvalidateModule());
|
||||
hasFetched = true;
|
||||
}
|
||||
|
||||
if (newFunctionCount != functionCount) {
|
||||
uint functionIndexStart = functionCount;
|
||||
uint functionIndexEnd = newFunctionCount - 1;
|
||||
functionCount = newFunctionCount;
|
||||
pendingTasks.Add(InvalidateFunctions(functionIndexStart, functionIndexEnd));
|
||||
}
|
||||
|
||||
await Task.WhenAll(pendingTasks);
|
||||
|
||||
OnChanged();
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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);
|
||||
});
|
||||
}
|
||||
|
||||
public ModuleType ModuleType {
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public string Name {
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public string Path {
|
||||
get;
|
||||
private set;
|
||||
}
|
||||
|
||||
public override string ToString() {
|
||||
return ToShortString();
|
||||
}
|
||||
|
||||
public string ToShortString() {
|
||||
return string.Format("[{0:X4}] {1}", Handle, Name);
|
||||
}
|
||||
|
||||
public int Count {
|
||||
get {
|
||||
return functions.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerator<Function> GetEnumerator() {
|
||||
return functions.GetEnumerator();
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator() {
|
||||
return functions.GetEnumerator();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,72 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using xe.debug.proto;
|
||||
using Xenia.Debug.Utilities;
|
||||
|
||||
namespace Xenia.Debug {
|
||||
public class ModuleList : Changeable<ModuleList>, IReadOnlyCollection<Module> {
|
||||
private readonly Debugger debugger;
|
||||
private readonly List<Module> modules = new List<Module>();
|
||||
|
||||
public ModuleList(Debugger debugger) {
|
||||
this.self = this;
|
||||
this.debugger = debugger;
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
public int Count {
|
||||
get {
|
||||
return modules.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerator<Module> GetEnumerator() {
|
||||
return modules.GetEnumerator();
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator() {
|
||||
return modules.GetEnumerator();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,36 +0,0 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Xenia.Debug")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("Xenia.Debug")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2015")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("58348c66-1b0d-497c-b51a-28e99df1ef74")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
@ -1,35 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class AccessViolationEvent : Table {
|
||||
public static AccessViolationEvent GetRootAsAccessViolationEvent(ByteBuffer _bb) { return GetRootAsAccessViolationEvent(_bb, new AccessViolationEvent()); }
|
||||
public static AccessViolationEvent GetRootAsAccessViolationEvent(ByteBuffer _bb, AccessViolationEvent obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public AccessViolationEvent __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public uint ThreadId { get { int o = __offset(4); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public uint TargetAddress { get { int o = __offset(6); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
|
||||
public static int CreateAccessViolationEvent(FlatBufferBuilder builder,
|
||||
uint thread_id = 0,
|
||||
uint target_address = 0) {
|
||||
builder.StartObject(2);
|
||||
AccessViolationEvent.AddTargetAddress(builder, target_address);
|
||||
AccessViolationEvent.AddThreadId(builder, thread_id);
|
||||
return AccessViolationEvent.EndAccessViolationEvent(builder);
|
||||
}
|
||||
|
||||
public static void StartAccessViolationEvent(FlatBufferBuilder builder) { builder.StartObject(2); }
|
||||
public static void AddThreadId(FlatBufferBuilder builder, uint threadId) { builder.AddUint(0, threadId, 0); }
|
||||
public static void AddTargetAddress(FlatBufferBuilder builder, uint targetAddress) { builder.AddUint(1, targetAddress, 0); }
|
||||
public static int EndAccessViolationEvent(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class AddBreakpointsRequest : Table {
|
||||
public static AddBreakpointsRequest GetRootAsAddBreakpointsRequest(ByteBuffer _bb) { return GetRootAsAddBreakpointsRequest(_bb, new AddBreakpointsRequest()); }
|
||||
public static AddBreakpointsRequest GetRootAsAddBreakpointsRequest(ByteBuffer _bb, AddBreakpointsRequest obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public AddBreakpointsRequest __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public Breakpoint GetBreakpoints(int j) { return GetBreakpoints(new Breakpoint(), j); }
|
||||
public Breakpoint GetBreakpoints(Breakpoint obj, int j) { int o = __offset(4); return o != 0 ? obj.__init(__vector(o) + j * 4, bb) : null; }
|
||||
public int BreakpointsLength { get { int o = __offset(4); return o != 0 ? __vector_len(o) : 0; } }
|
||||
|
||||
public static int CreateAddBreakpointsRequest(FlatBufferBuilder builder,
|
||||
int breakpoints = 0) {
|
||||
builder.StartObject(1);
|
||||
AddBreakpointsRequest.AddBreakpoints(builder, breakpoints);
|
||||
return AddBreakpointsRequest.EndAddBreakpointsRequest(builder);
|
||||
}
|
||||
|
||||
public static void StartAddBreakpointsRequest(FlatBufferBuilder builder) { builder.StartObject(1); }
|
||||
public static void AddBreakpoints(FlatBufferBuilder builder, int breakpointsOffset) { builder.AddOffset(0, breakpointsOffset, 0); }
|
||||
public static void StartBreakpointsVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(4, numElems, 4); }
|
||||
public static int EndAddBreakpointsRequest(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class AddBreakpointsResponse : Table {
|
||||
public static AddBreakpointsResponse GetRootAsAddBreakpointsResponse(ByteBuffer _bb) { return GetRootAsAddBreakpointsResponse(_bb, new AddBreakpointsResponse()); }
|
||||
public static AddBreakpointsResponse GetRootAsAddBreakpointsResponse(ByteBuffer _bb, AddBreakpointsResponse obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public AddBreakpointsResponse __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
|
||||
public static void StartAddBreakpointsResponse(FlatBufferBuilder builder) { builder.StartObject(0); }
|
||||
public static int EndAddBreakpointsResponse(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class AttachRequest : Table {
|
||||
public static AttachRequest GetRootAsAttachRequest(ByteBuffer _bb) { return GetRootAsAttachRequest(_bb, new AttachRequest()); }
|
||||
public static AttachRequest GetRootAsAttachRequest(ByteBuffer _bb, AttachRequest obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public AttachRequest __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
|
||||
public static void StartAttachRequest(FlatBufferBuilder builder) { builder.StartObject(0); }
|
||||
public static int EndAttachRequest(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,51 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class AttachResponse : Table {
|
||||
public static AttachResponse GetRootAsAttachResponse(ByteBuffer _bb) { return GetRootAsAttachResponse(_bb, new AttachResponse()); }
|
||||
public static AttachResponse GetRootAsAttachResponse(ByteBuffer _bb, AttachResponse obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public AttachResponse __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public string MemoryFile { get { int o = __offset(4); return o != 0 ? __string(o + bb_pos) : null; } }
|
||||
public string CodeCacheFile { get { int o = __offset(6); return o != 0 ? __string(o + bb_pos) : null; } }
|
||||
public uint CodeCacheBase { get { int o = __offset(8); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public uint CodeCacheSize { get { int o = __offset(10); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public string FunctionsFile { get { int o = __offset(12); return o != 0 ? __string(o + bb_pos) : null; } }
|
||||
public string FunctionsTraceFile { get { int o = __offset(14); return o != 0 ? __string(o + bb_pos) : null; } }
|
||||
|
||||
public static int CreateAttachResponse(FlatBufferBuilder builder,
|
||||
int memory_file = 0,
|
||||
int code_cache_file = 0,
|
||||
uint code_cache_base = 0,
|
||||
uint code_cache_size = 0,
|
||||
int functions_file = 0,
|
||||
int functions_trace_file = 0) {
|
||||
builder.StartObject(6);
|
||||
AttachResponse.AddFunctionsTraceFile(builder, functions_trace_file);
|
||||
AttachResponse.AddFunctionsFile(builder, functions_file);
|
||||
AttachResponse.AddCodeCacheSize(builder, code_cache_size);
|
||||
AttachResponse.AddCodeCacheBase(builder, code_cache_base);
|
||||
AttachResponse.AddCodeCacheFile(builder, code_cache_file);
|
||||
AttachResponse.AddMemoryFile(builder, memory_file);
|
||||
return AttachResponse.EndAttachResponse(builder);
|
||||
}
|
||||
|
||||
public static void StartAttachResponse(FlatBufferBuilder builder) { builder.StartObject(6); }
|
||||
public static void AddMemoryFile(FlatBufferBuilder builder, int memoryFileOffset) { builder.AddOffset(0, memoryFileOffset, 0); }
|
||||
public static void AddCodeCacheFile(FlatBufferBuilder builder, int codeCacheFileOffset) { builder.AddOffset(1, codeCacheFileOffset, 0); }
|
||||
public static void AddCodeCacheBase(FlatBufferBuilder builder, uint codeCacheBase) { builder.AddUint(2, codeCacheBase, 0); }
|
||||
public static void AddCodeCacheSize(FlatBufferBuilder builder, uint codeCacheSize) { builder.AddUint(3, codeCacheSize, 0); }
|
||||
public static void AddFunctionsFile(FlatBufferBuilder builder, int functionsFileOffset) { builder.AddOffset(4, functionsFileOffset, 0); }
|
||||
public static void AddFunctionsTraceFile(FlatBufferBuilder builder, int functionsTraceFileOffset) { builder.AddOffset(5, functionsTraceFileOffset, 0); }
|
||||
public static int EndAttachResponse(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class BreakRequest : Table {
|
||||
public static BreakRequest GetRootAsBreakRequest(ByteBuffer _bb) { return GetRootAsBreakRequest(_bb, new BreakRequest()); }
|
||||
public static BreakRequest GetRootAsBreakRequest(ByteBuffer _bb, BreakRequest obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public BreakRequest __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
|
||||
public static void StartBreakRequest(FlatBufferBuilder builder) { builder.StartObject(0); }
|
||||
public static int EndBreakRequest(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class BreakResponse : Table {
|
||||
public static BreakResponse GetRootAsBreakResponse(ByteBuffer _bb) { return GetRootAsBreakResponse(_bb, new BreakResponse()); }
|
||||
public static BreakResponse GetRootAsBreakResponse(ByteBuffer _bb, BreakResponse obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public BreakResponse __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
|
||||
public static void StartBreakResponse(FlatBufferBuilder builder) { builder.StartObject(0); }
|
||||
public static int EndBreakResponse(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class Breakpoint : Struct {
|
||||
public Breakpoint __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public uint BreakpointId { get { return bb.GetUint(bb_pos + 0); } }
|
||||
|
||||
public static int CreateBreakpoint(FlatBufferBuilder builder, uint BreakpointId) {
|
||||
builder.Prep(4, 4);
|
||||
builder.PutUint(BreakpointId);
|
||||
return builder.Offset;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class BreakpointEvent : Table {
|
||||
public static BreakpointEvent GetRootAsBreakpointEvent(ByteBuffer _bb) { return GetRootAsBreakpointEvent(_bb, new BreakpointEvent()); }
|
||||
public static BreakpointEvent GetRootAsBreakpointEvent(ByteBuffer _bb, BreakpointEvent obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public BreakpointEvent __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public uint ThreadId { get { int o = __offset(4); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public uint BreakpointId { get { int o = __offset(6); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
|
||||
public static int CreateBreakpointEvent(FlatBufferBuilder builder,
|
||||
uint thread_id = 0,
|
||||
uint breakpoint_id = 0) {
|
||||
builder.StartObject(2);
|
||||
BreakpointEvent.AddBreakpointId(builder, breakpoint_id);
|
||||
BreakpointEvent.AddThreadId(builder, thread_id);
|
||||
return BreakpointEvent.EndBreakpointEvent(builder);
|
||||
}
|
||||
|
||||
public static void StartBreakpointEvent(FlatBufferBuilder builder) { builder.StartObject(2); }
|
||||
public static void AddThreadId(FlatBufferBuilder builder, uint threadId) { builder.AddUint(0, threadId, 0); }
|
||||
public static void AddBreakpointId(FlatBufferBuilder builder, uint breakpointId) { builder.AddUint(1, breakpointId, 0); }
|
||||
public static int EndBreakpointEvent(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
public enum ContinueAction : sbyte
|
||||
{
|
||||
Continue = 0,
|
||||
ContinueTo = 1,
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class ContinueRequest : Table {
|
||||
public static ContinueRequest GetRootAsContinueRequest(ByteBuffer _bb) { return GetRootAsContinueRequest(_bb, new ContinueRequest()); }
|
||||
public static ContinueRequest GetRootAsContinueRequest(ByteBuffer _bb, ContinueRequest obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public ContinueRequest __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public ContinueAction Action { get { int o = __offset(4); return o != 0 ? (ContinueAction)bb.GetSbyte(o + bb_pos) : (ContinueAction)0; } }
|
||||
public uint TargetAddress { get { int o = __offset(6); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
|
||||
public static int CreateContinueRequest(FlatBufferBuilder builder,
|
||||
ContinueAction action = 0,
|
||||
uint target_address = 0) {
|
||||
builder.StartObject(2);
|
||||
ContinueRequest.AddTargetAddress(builder, target_address);
|
||||
ContinueRequest.AddAction(builder, action);
|
||||
return ContinueRequest.EndContinueRequest(builder);
|
||||
}
|
||||
|
||||
public static void StartContinueRequest(FlatBufferBuilder builder) { builder.StartObject(2); }
|
||||
public static void AddAction(FlatBufferBuilder builder, ContinueAction action) { builder.AddSbyte(0, (sbyte)(action), 0); }
|
||||
public static void AddTargetAddress(FlatBufferBuilder builder, uint targetAddress) { builder.AddUint(1, targetAddress, 0); }
|
||||
public static int EndContinueRequest(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class ContinueResponse : Table {
|
||||
public static ContinueResponse GetRootAsContinueResponse(ByteBuffer _bb) { return GetRootAsContinueResponse(_bb, new ContinueResponse()); }
|
||||
public static ContinueResponse GetRootAsContinueResponse(ByteBuffer _bb, ContinueResponse obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public ContinueResponse __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
|
||||
public static void StartContinueResponse(FlatBufferBuilder builder) { builder.StartObject(0); }
|
||||
public static int EndContinueResponse(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,59 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class Function : Table {
|
||||
public static Function GetRootAsFunction(ByteBuffer _bb) { return GetRootAsFunction(_bb, new Function()); }
|
||||
public static Function GetRootAsFunction(ByteBuffer _bb, Function obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public Function __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public ulong Identifier { get { int o = __offset(4); return o != 0 ? bb.GetUlong(o + bb_pos) : (ulong)0; } }
|
||||
public uint AddressStart { get { int o = __offset(6); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public uint AddressEnd { get { int o = __offset(8); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public string Name { get { int o = __offset(10); return o != 0 ? __string(o + bb_pos) : null; } }
|
||||
public uint MachineCodeStart { get { int o = __offset(12); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public uint MachineCodeEnd { get { int o = __offset(14); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public string DisasmHirRaw { get { int o = __offset(16); return o != 0 ? __string(o + bb_pos) : null; } }
|
||||
public string DisasmHirOpt { get { int o = __offset(18); return o != 0 ? __string(o + bb_pos) : null; } }
|
||||
|
||||
public static int CreateFunction(FlatBufferBuilder builder,
|
||||
ulong identifier = 0,
|
||||
uint address_start = 0,
|
||||
uint address_end = 0,
|
||||
int name = 0,
|
||||
uint machine_code_start = 0,
|
||||
uint machine_code_end = 0,
|
||||
int disasm_hir_raw = 0,
|
||||
int disasm_hir_opt = 0) {
|
||||
builder.StartObject(8);
|
||||
Function.AddIdentifier(builder, identifier);
|
||||
Function.AddDisasmHirOpt(builder, disasm_hir_opt);
|
||||
Function.AddDisasmHirRaw(builder, disasm_hir_raw);
|
||||
Function.AddMachineCodeEnd(builder, machine_code_end);
|
||||
Function.AddMachineCodeStart(builder, machine_code_start);
|
||||
Function.AddName(builder, name);
|
||||
Function.AddAddressEnd(builder, address_end);
|
||||
Function.AddAddressStart(builder, address_start);
|
||||
return Function.EndFunction(builder);
|
||||
}
|
||||
|
||||
public static void StartFunction(FlatBufferBuilder builder) { builder.StartObject(8); }
|
||||
public static void AddIdentifier(FlatBufferBuilder builder, ulong identifier) { builder.AddUlong(0, identifier, 0); }
|
||||
public static void AddAddressStart(FlatBufferBuilder builder, uint addressStart) { builder.AddUint(1, addressStart, 0); }
|
||||
public static void AddAddressEnd(FlatBufferBuilder builder, uint addressEnd) { builder.AddUint(2, addressEnd, 0); }
|
||||
public static void AddName(FlatBufferBuilder builder, int nameOffset) { builder.AddOffset(3, nameOffset, 0); }
|
||||
public static void AddMachineCodeStart(FlatBufferBuilder builder, uint machineCodeStart) { builder.AddUint(4, machineCodeStart, 0); }
|
||||
public static void AddMachineCodeEnd(FlatBufferBuilder builder, uint machineCodeEnd) { builder.AddUint(5, machineCodeEnd, 0); }
|
||||
public static void AddDisasmHirRaw(FlatBufferBuilder builder, int disasmHirRawOffset) { builder.AddOffset(6, disasmHirRawOffset, 0); }
|
||||
public static void AddDisasmHirOpt(FlatBufferBuilder builder, int disasmHirOptOffset) { builder.AddOffset(7, disasmHirOptOffset, 0); }
|
||||
public static int EndFunction(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class FunctionEntry : Table {
|
||||
public static FunctionEntry GetRootAsFunctionEntry(ByteBuffer _bb) { return GetRootAsFunctionEntry(_bb, new FunctionEntry()); }
|
||||
public static FunctionEntry GetRootAsFunctionEntry(ByteBuffer _bb, FunctionEntry obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public FunctionEntry __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public ulong Identifier { get { int o = __offset(4); return o != 0 ? bb.GetUlong(o + bb_pos) : (ulong)0; } }
|
||||
public uint AddressStart { get { int o = __offset(6); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public uint AddressEnd { get { int o = __offset(8); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public string Name { get { int o = __offset(10); return o != 0 ? __string(o + bb_pos) : null; } }
|
||||
|
||||
public static int CreateFunctionEntry(FlatBufferBuilder builder,
|
||||
ulong identifier = 0,
|
||||
uint address_start = 0,
|
||||
uint address_end = 0,
|
||||
int name = 0) {
|
||||
builder.StartObject(4);
|
||||
FunctionEntry.AddIdentifier(builder, identifier);
|
||||
FunctionEntry.AddName(builder, name);
|
||||
FunctionEntry.AddAddressEnd(builder, address_end);
|
||||
FunctionEntry.AddAddressStart(builder, address_start);
|
||||
return FunctionEntry.EndFunctionEntry(builder);
|
||||
}
|
||||
|
||||
public static void StartFunctionEntry(FlatBufferBuilder builder) { builder.StartObject(4); }
|
||||
public static void AddIdentifier(FlatBufferBuilder builder, ulong identifier) { builder.AddUlong(0, identifier, 0); }
|
||||
public static void AddAddressStart(FlatBufferBuilder builder, uint addressStart) { builder.AddUint(1, addressStart, 0); }
|
||||
public static void AddAddressEnd(FlatBufferBuilder builder, uint addressEnd) { builder.AddUint(2, addressEnd, 0); }
|
||||
public static void AddName(FlatBufferBuilder builder, int nameOffset) { builder.AddOffset(3, nameOffset, 0); }
|
||||
public static int EndFunctionEntry(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class GetFunctionRequest : Table {
|
||||
public static GetFunctionRequest GetRootAsGetFunctionRequest(ByteBuffer _bb) { return GetRootAsGetFunctionRequest(_bb, new GetFunctionRequest()); }
|
||||
public static GetFunctionRequest GetRootAsGetFunctionRequest(ByteBuffer _bb, GetFunctionRequest obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public GetFunctionRequest __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public ulong Identifier { get { int o = __offset(4); return o != 0 ? bb.GetUlong(o + bb_pos) : (ulong)0; } }
|
||||
|
||||
public static int CreateGetFunctionRequest(FlatBufferBuilder builder,
|
||||
ulong identifier = 0) {
|
||||
builder.StartObject(1);
|
||||
GetFunctionRequest.AddIdentifier(builder, identifier);
|
||||
return GetFunctionRequest.EndGetFunctionRequest(builder);
|
||||
}
|
||||
|
||||
public static void StartGetFunctionRequest(FlatBufferBuilder builder) { builder.StartObject(1); }
|
||||
public static void AddIdentifier(FlatBufferBuilder builder, ulong identifier) { builder.AddUlong(0, identifier, 0); }
|
||||
public static int EndGetFunctionRequest(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class GetFunctionResponse : Table {
|
||||
public static GetFunctionResponse GetRootAsGetFunctionResponse(ByteBuffer _bb) { return GetRootAsGetFunctionResponse(_bb, new GetFunctionResponse()); }
|
||||
public static GetFunctionResponse GetRootAsGetFunctionResponse(ByteBuffer _bb, GetFunctionResponse obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public GetFunctionResponse __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public Function Function { get { return GetFunction(new Function()); } }
|
||||
public Function GetFunction(Function obj) { int o = __offset(4); return o != 0 ? obj.__init(__indirect(o + bb_pos), bb) : null; }
|
||||
|
||||
public static int CreateGetFunctionResponse(FlatBufferBuilder builder,
|
||||
int function = 0) {
|
||||
builder.StartObject(1);
|
||||
GetFunctionResponse.AddFunction(builder, function);
|
||||
return GetFunctionResponse.EndGetFunctionResponse(builder);
|
||||
}
|
||||
|
||||
public static void StartGetFunctionResponse(FlatBufferBuilder builder) { builder.StartObject(1); }
|
||||
public static void AddFunction(FlatBufferBuilder builder, int functionOffset) { builder.AddOffset(0, functionOffset, 0); }
|
||||
public static int EndGetFunctionResponse(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class GetModuleRequest : Table {
|
||||
public static GetModuleRequest GetRootAsGetModuleRequest(ByteBuffer _bb) { return GetRootAsGetModuleRequest(_bb, new GetModuleRequest()); }
|
||||
public static GetModuleRequest GetRootAsGetModuleRequest(ByteBuffer _bb, GetModuleRequest obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public GetModuleRequest __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public uint ModuleId { get { int o = __offset(4); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
|
||||
public static int CreateGetModuleRequest(FlatBufferBuilder builder,
|
||||
uint module_id = 0) {
|
||||
builder.StartObject(1);
|
||||
GetModuleRequest.AddModuleId(builder, module_id);
|
||||
return GetModuleRequest.EndGetModuleRequest(builder);
|
||||
}
|
||||
|
||||
public static void StartGetModuleRequest(FlatBufferBuilder builder) { builder.StartObject(1); }
|
||||
public static void AddModuleId(FlatBufferBuilder builder, uint moduleId) { builder.AddUint(0, moduleId, 0); }
|
||||
public static int EndGetModuleRequest(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class GetModuleResponse : Table {
|
||||
public static GetModuleResponse GetRootAsGetModuleResponse(ByteBuffer _bb) { return GetRootAsGetModuleResponse(_bb, new GetModuleResponse()); }
|
||||
public static GetModuleResponse GetRootAsGetModuleResponse(ByteBuffer _bb, GetModuleResponse obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public GetModuleResponse __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public Module Module { get { return GetModule(new Module()); } }
|
||||
public Module GetModule(Module obj) { int o = __offset(4); return o != 0 ? obj.__init(__indirect(o + bb_pos), bb) : null; }
|
||||
|
||||
public static int CreateGetModuleResponse(FlatBufferBuilder builder,
|
||||
int module = 0) {
|
||||
builder.StartObject(1);
|
||||
GetModuleResponse.AddModule(builder, module);
|
||||
return GetModuleResponse.EndGetModuleResponse(builder);
|
||||
}
|
||||
|
||||
public static void StartGetModuleResponse(FlatBufferBuilder builder) { builder.StartObject(1); }
|
||||
public static void AddModule(FlatBufferBuilder builder, int moduleOffset) { builder.AddOffset(0, moduleOffset, 0); }
|
||||
public static int EndGetModuleResponse(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class ListBreakpointsRequest : Table {
|
||||
public static ListBreakpointsRequest GetRootAsListBreakpointsRequest(ByteBuffer _bb) { return GetRootAsListBreakpointsRequest(_bb, new ListBreakpointsRequest()); }
|
||||
public static ListBreakpointsRequest GetRootAsListBreakpointsRequest(ByteBuffer _bb, ListBreakpointsRequest obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public ListBreakpointsRequest __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
|
||||
public static void StartListBreakpointsRequest(FlatBufferBuilder builder) { builder.StartObject(0); }
|
||||
public static int EndListBreakpointsRequest(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class ListBreakpointsResponse : Table {
|
||||
public static ListBreakpointsResponse GetRootAsListBreakpointsResponse(ByteBuffer _bb) { return GetRootAsListBreakpointsResponse(_bb, new ListBreakpointsResponse()); }
|
||||
public static ListBreakpointsResponse GetRootAsListBreakpointsResponse(ByteBuffer _bb, ListBreakpointsResponse obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public ListBreakpointsResponse __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public Breakpoint GetBreakpoints(int j) { return GetBreakpoints(new Breakpoint(), j); }
|
||||
public Breakpoint GetBreakpoints(Breakpoint obj, int j) { int o = __offset(4); return o != 0 ? obj.__init(__vector(o) + j * 4, bb) : null; }
|
||||
public int BreakpointsLength { get { int o = __offset(4); return o != 0 ? __vector_len(o) : 0; } }
|
||||
|
||||
public static int CreateListBreakpointsResponse(FlatBufferBuilder builder,
|
||||
int breakpoints = 0) {
|
||||
builder.StartObject(1);
|
||||
ListBreakpointsResponse.AddBreakpoints(builder, breakpoints);
|
||||
return ListBreakpointsResponse.EndListBreakpointsResponse(builder);
|
||||
}
|
||||
|
||||
public static void StartListBreakpointsResponse(FlatBufferBuilder builder) { builder.StartObject(1); }
|
||||
public static void AddBreakpoints(FlatBufferBuilder builder, int breakpointsOffset) { builder.AddOffset(0, breakpointsOffset, 0); }
|
||||
public static void StartBreakpointsVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(4, numElems, 4); }
|
||||
public static int EndListBreakpointsResponse(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class ListFunctionsRequest : Table {
|
||||
public static ListFunctionsRequest GetRootAsListFunctionsRequest(ByteBuffer _bb) { return GetRootAsListFunctionsRequest(_bb, new ListFunctionsRequest()); }
|
||||
public static ListFunctionsRequest GetRootAsListFunctionsRequest(ByteBuffer _bb, ListFunctionsRequest obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public ListFunctionsRequest __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public uint ModuleId { get { int o = __offset(4); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public uint FunctionIndexStart { get { int o = __offset(6); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
public uint FunctionIndexEnd { get { int o = __offset(8); return o != 0 ? bb.GetUint(o + bb_pos) : (uint)0; } }
|
||||
|
||||
public static int CreateListFunctionsRequest(FlatBufferBuilder builder,
|
||||
uint module_id = 0,
|
||||
uint function_index_start = 0,
|
||||
uint function_index_end = 0) {
|
||||
builder.StartObject(3);
|
||||
ListFunctionsRequest.AddFunctionIndexEnd(builder, function_index_end);
|
||||
ListFunctionsRequest.AddFunctionIndexStart(builder, function_index_start);
|
||||
ListFunctionsRequest.AddModuleId(builder, module_id);
|
||||
return ListFunctionsRequest.EndListFunctionsRequest(builder);
|
||||
}
|
||||
|
||||
public static void StartListFunctionsRequest(FlatBufferBuilder builder) { builder.StartObject(3); }
|
||||
public static void AddModuleId(FlatBufferBuilder builder, uint moduleId) { builder.AddUint(0, moduleId, 0); }
|
||||
public static void AddFunctionIndexStart(FlatBufferBuilder builder, uint functionIndexStart) { builder.AddUint(1, functionIndexStart, 0); }
|
||||
public static void AddFunctionIndexEnd(FlatBufferBuilder builder, uint functionIndexEnd) { builder.AddUint(2, functionIndexEnd, 0); }
|
||||
public static int EndListFunctionsRequest(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class ListFunctionsResponse : Table {
|
||||
public static ListFunctionsResponse GetRootAsListFunctionsResponse(ByteBuffer _bb) { return GetRootAsListFunctionsResponse(_bb, new ListFunctionsResponse()); }
|
||||
public static ListFunctionsResponse GetRootAsListFunctionsResponse(ByteBuffer _bb, ListFunctionsResponse obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public ListFunctionsResponse __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public FunctionEntry GetEntry(int j) { return GetEntry(new FunctionEntry(), j); }
|
||||
public FunctionEntry GetEntry(FunctionEntry obj, int j) { int o = __offset(4); return o != 0 ? obj.__init(__indirect(__vector(o) + j * 4), bb) : null; }
|
||||
public int EntryLength { get { int o = __offset(4); return o != 0 ? __vector_len(o) : 0; } }
|
||||
|
||||
public static int CreateListFunctionsResponse(FlatBufferBuilder builder,
|
||||
int entry = 0) {
|
||||
builder.StartObject(1);
|
||||
ListFunctionsResponse.AddEntry(builder, entry);
|
||||
return ListFunctionsResponse.EndListFunctionsResponse(builder);
|
||||
}
|
||||
|
||||
public static void StartListFunctionsResponse(FlatBufferBuilder builder) { builder.StartObject(1); }
|
||||
public static void AddEntry(FlatBufferBuilder builder, int entryOffset) { builder.AddOffset(0, entryOffset, 0); }
|
||||
public static int CreateEntryVector(FlatBufferBuilder builder, int[] data) { builder.StartVector(4, data.Length, 4); for (int i = data.Length - 1; i >= 0; i--) builder.AddOffset(data[i]); return builder.EndVector(); }
|
||||
public static void StartEntryVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(4, numElems, 4); }
|
||||
public static int EndListFunctionsResponse(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class ListModuleEntry : Struct {
|
||||
public ListModuleEntry __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public uint Handle { get { return bb.GetUint(bb_pos + 0); } }
|
||||
public uint FunctionCount { get { return bb.GetUint(bb_pos + 4); } }
|
||||
|
||||
public static int CreateListModuleEntry(FlatBufferBuilder builder, uint Handle, uint FunctionCount) {
|
||||
builder.Prep(4, 8);
|
||||
builder.PutUint(FunctionCount);
|
||||
builder.PutUint(Handle);
|
||||
return builder.Offset;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class ListModulesRequest : Table {
|
||||
public static ListModulesRequest GetRootAsListModulesRequest(ByteBuffer _bb) { return GetRootAsListModulesRequest(_bb, new ListModulesRequest()); }
|
||||
public static ListModulesRequest GetRootAsListModulesRequest(ByteBuffer _bb, ListModulesRequest obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public ListModulesRequest __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
|
||||
public static void StartListModulesRequest(FlatBufferBuilder builder) { builder.StartObject(0); }
|
||||
public static int EndListModulesRequest(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class ListModulesResponse : Table {
|
||||
public static ListModulesResponse GetRootAsListModulesResponse(ByteBuffer _bb) { return GetRootAsListModulesResponse(_bb, new ListModulesResponse()); }
|
||||
public static ListModulesResponse GetRootAsListModulesResponse(ByteBuffer _bb, ListModulesResponse obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public ListModulesResponse __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public ListModuleEntry GetEntry(int j) { return GetEntry(new ListModuleEntry(), j); }
|
||||
public ListModuleEntry GetEntry(ListModuleEntry obj, int j) { int o = __offset(4); return o != 0 ? obj.__init(__vector(o) + j * 8, bb) : null; }
|
||||
public int EntryLength { get { int o = __offset(4); return o != 0 ? __vector_len(o) : 0; } }
|
||||
|
||||
public static int CreateListModulesResponse(FlatBufferBuilder builder,
|
||||
int entry = 0) {
|
||||
builder.StartObject(1);
|
||||
ListModulesResponse.AddEntry(builder, entry);
|
||||
return ListModulesResponse.EndListModulesResponse(builder);
|
||||
}
|
||||
|
||||
public static void StartListModulesResponse(FlatBufferBuilder builder) { builder.StartObject(1); }
|
||||
public static void AddEntry(FlatBufferBuilder builder, int entryOffset) { builder.AddOffset(0, entryOffset, 0); }
|
||||
public static void StartEntryVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(8, numElems, 4); }
|
||||
public static int EndListModulesResponse(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class ListThreadsRequest : Table {
|
||||
public static ListThreadsRequest GetRootAsListThreadsRequest(ByteBuffer _bb) { return GetRootAsListThreadsRequest(_bb, new ListThreadsRequest()); }
|
||||
public static ListThreadsRequest GetRootAsListThreadsRequest(ByteBuffer _bb, ListThreadsRequest obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public ListThreadsRequest __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
|
||||
public static void StartListThreadsRequest(FlatBufferBuilder builder) { builder.StartObject(0); }
|
||||
public static int EndListThreadsRequest(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class ListThreadsResponse : Table {
|
||||
public static ListThreadsResponse GetRootAsListThreadsResponse(ByteBuffer _bb) { return GetRootAsListThreadsResponse(_bb, new ListThreadsResponse()); }
|
||||
public static ListThreadsResponse GetRootAsListThreadsResponse(ByteBuffer _bb, ListThreadsResponse obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public ListThreadsResponse __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public Thread GetThread(int j) { return GetThread(new Thread(), j); }
|
||||
public Thread GetThread(Thread obj, int j) { int o = __offset(4); return o != 0 ? obj.__init(__indirect(__vector(o) + j * 4), bb) : null; }
|
||||
public int ThreadLength { get { int o = __offset(4); return o != 0 ? __vector_len(o) : 0; } }
|
||||
|
||||
public static int CreateListThreadsResponse(FlatBufferBuilder builder,
|
||||
int thread = 0) {
|
||||
builder.StartObject(1);
|
||||
ListThreadsResponse.AddThread(builder, thread);
|
||||
return ListThreadsResponse.EndListThreadsResponse(builder);
|
||||
}
|
||||
|
||||
public static void StartListThreadsResponse(FlatBufferBuilder builder) { builder.StartObject(1); }
|
||||
public static void AddThread(FlatBufferBuilder builder, int threadOffset) { builder.AddOffset(0, threadOffset, 0); }
|
||||
public static int CreateThreadVector(FlatBufferBuilder builder, int[] data) { builder.StartVector(4, data.Length, 4); for (int i = data.Length - 1; i >= 0; i--) builder.AddOffset(data[i]); return builder.EndVector(); }
|
||||
public static void StartThreadVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(4, numElems, 4); }
|
||||
public static int EndListThreadsResponse(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
using FlatBuffers;
|
||||
|
||||
public sealed class Module : Table {
|
||||
public static Module GetRootAsModule(ByteBuffer _bb) { return GetRootAsModule(_bb, new Module()); }
|
||||
public static Module GetRootAsModule(ByteBuffer _bb, Module obj) { return (obj.__init(_bb.GetInt(_bb.Position) + _bb.Position, _bb)); }
|
||||
public Module __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
|
||||
|
||||
public XObject Object { get { return GetObject(new XObject()); } }
|
||||
public XObject GetObject(XObject obj) { int o = __offset(4); return o != 0 ? obj.__init(o + bb_pos, bb) : null; }
|
||||
public ModuleType Type { get { int o = __offset(6); return o != 0 ? (ModuleType)bb.GetSbyte(o + bb_pos) : (ModuleType)0; } }
|
||||
public string Name { get { int o = __offset(8); return o != 0 ? __string(o + bb_pos) : null; } }
|
||||
public string Path { get { int o = __offset(10); return o != 0 ? __string(o + bb_pos) : null; } }
|
||||
|
||||
public static void StartModule(FlatBufferBuilder builder) { builder.StartObject(4); }
|
||||
public static void AddObject(FlatBufferBuilder builder, int objectOffset) { builder.AddStruct(0, objectOffset, 0); }
|
||||
public static void AddType(FlatBufferBuilder builder, ModuleType type) { builder.AddSbyte(1, (sbyte)(type), 0); }
|
||||
public static void AddName(FlatBufferBuilder builder, int nameOffset) { builder.AddOffset(2, nameOffset, 0); }
|
||||
public static void AddPath(FlatBufferBuilder builder, int pathOffset) { builder.AddOffset(3, pathOffset, 0); }
|
||||
public static int EndModule(FlatBufferBuilder builder) {
|
||||
int o = builder.EndObject();
|
||||
return o;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
// automatically generated, do not modify
|
||||
|
||||
namespace xe.debug.proto
|
||||
{
|
||||
|
||||
public enum ModuleType : sbyte
|
||||
{
|
||||
Kernel = 0,
|
||||
User = 1,
|
||||
};
|
||||
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue