From: Igor Kulaychuk Date: Mon, 21 May 2018 17:22:33 +0000 (+0300) Subject: Simplify build parameters and update README X-Git-Tag: submit/tizen/20180620.071641~4^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=17861c799ccf853a8f755b5ecf424eddfa004d7c;p=sdk%2Ftools%2Fnetcoredbg.git Simplify build parameters and update README --- diff --git a/CMakeLists.txt b/CMakeLists.txt index b91687b..a8f92d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 2.8.12.2) project(netcoredbg) -set(CLR_DIR "$ENV{HOME}/work/coreclr" CACHE FILEPATH "Path to coreclr directory") -set(CLR_BIN_DIR "${CLR_DIR}" CACHE FILEPATH "Path to coreclr bin directory") +set(CLR_DIR "${CMAKE_SOURCE_DIR}/../coreclr" CACHE FILEPATH "Path to coreclr directory") +set(CLR_BIN_DIR "${CLR_DIR}/bin/Product/Linux.x64.Debug" CACHE FILEPATH "Path to coreclr bin directory") set(BUILD_MANAGED ON CACHE BOOL "Build managed part") set(DBGSHIM_INSTALL ON CACHE BOOL "Install libdbgshim") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-null-conversion") diff --git a/README.md b/README.md index 9bdd598..154e507 100644 --- a/README.md +++ b/README.md @@ -1,79 +1,47 @@ -# Managed code debugger for .NET Core runtime +# Debugger for .NET Core runtime -The debugger provides GDB/MI interface and allows to debug .NET apps using ICorDebug API of CoreCLR. +The debugger provides GDB/MI or VSCode debug adapter interface and allows to debug .NET apps under .NET Core runtime. ## Build (Ubuntu x64) -1. Install .NET Core SDK 2.x from https://dot.net/core +1. Install .NET Core SDK 2.0+ from https://dot.net/core -2. Build and install coreclr and corefx, see https://github.com/dotnet/coreclr for details +2. Build coreclr, see https://github.com/dotnet/coreclr for instructions -3. Use the following script as a reference to build the debugger (assuming current directory is project root): +3. Build the debugger with `cmake` and `clang` (assuming current directory is project root, coreclr is cloned and built next to debugger directory): ``` - #!/bin/sh - - # Path to coreclr source root - CORECLR_PATH=$HOME/git/coreclr - # Path to coreclr build output (use .Relese for release build) - CORECLR_BIN=$CORECLR_PATH/bin/Product/Linux.x64.Debug - # Path to generated coreclr overlay (where coreclr and corefx binaries are installed) - CORECLR_OVERLAY=$HOME/git/overlay - - rm -rf build mkdir build cd build - CC=clang CXX=clang++ cmake -DCMAKE_INSTALL_PREFIX=$CORECLR_OVERLAY -DCLR_DIR=$CORECLR_PATH -DCLR_BIN_DIR=$CORECLR_BIN -DCORECLR_SET_RPATH=\$ORIGIN ../ + CC=clang CXX=clang++ cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/../bin + make -j make install ``` - The script produces `netcoredbg` and `SymbolReader.dll` binaries inside the overlay directory. - -## Build (GBS) - -1. Prepare - - Prepare GBS environment and add a path to local repository to your `.gbs.conf`. - - See the guide here http://suprem.sec.samsung.net/confluence/display/SPTDTLC/Profiler+architecture - -2. Build modified `coreclr` and `coreclr-devel` packages - - Apply the patches from `patches/coreclr` and build CoreCLR from - https://review.tizen.org/gerrit/#/admin/projects/platform/upstream/coreclr - - This step will produce updated `coreclr` and `mscorlib` RPMs for installing on the device/emulator. - Also it will generate the `coreclr-devel` package in the local repo which is necessary for building the debugger. - -3. Build the `netcoredbg` package - - Clone the repo and build as usual: - ``` - gbs build -A armv7l --include-all --spec netcoredbg.spec - ``` - -4. Build modified `dotnet-launcher` package + CMake accepts additional options: - Apply the patches from `patches/dotnet-launcher` and build `dotnet-launcher` from - https://review.tizen.org/gerrit/#/admin/projects/platform/core/dotnet/launcher + `-DCLR_DIR=$HOME/git/coreclr` path to coreclr source root directory -## Usage + `-DCLR_BIN_DIR=$HOME/git/coreclr/bin/Product/Linux.x64.Debug` path to coreclr build result directory -1. Install packages on the device/emulator + `-DCORECLR_SET_RPATH=/usr/shared/dotnet/Microsoft.NETCore.App/2.0.0` path where `libdbgshim.so` is located - Install RPMs from local GBS repo: `coreclr`, `mscorlib`, `dotnet-launcher` and `netcoredbg`. +4. The above commands create `./bin` directory with `netcoredbg` binary and additional libraries. - You may also need to remove AOT images: + Now running the debugger with `--help` option should look like this: ``` - sdb shell "find / -name '*.ni.dll' -exec rm {} \;" + $ ../bin/netcoredbg --help + .NET Core debugger for Linux/macOS. + + Options: + --attach Attach the debugger to the specified process id. + --interpreter=mi Puts the debugger into MI mode. + --interpreter=vscode Puts the debugger into VS Code Debugger mode. + --engineLogging[=] Enable logging to VsDbg-UI or file for the engine. + Only supported by the VsCode interpreter. + --server[=port_num] Start the debugger listening for requests on the + specified TCP/IP port instead of stdin/out. If port is not specified + TCP 4711 will be used. ``` - - Reboot the device/emulator. - -2. Use modified Visual Studio Tools for Tizen - - Build `vs-tools-cps` project from - https://github.sec.samsung.net/i-kulaychuk/vs-tools-cps/tree/netcoredbg-attach - and launch the debug session with F5. diff --git a/src/debug/netcoredbg/CMakeLists.txt b/src/debug/netcoredbg/CMakeLists.txt index 8b59ccb..b515022 100644 --- a/src/debug/netcoredbg/CMakeLists.txt +++ b/src/debug/netcoredbg/CMakeLists.txt @@ -39,16 +39,17 @@ set(netcoredbg_SRC set(CMAKE_INCLUDE_CURRENT_DIR ON) -# Set the RPATH of sos so that it can find dependencies without needing to set LD_LIBRARY_PATH +# Set the RPATH of debugger so that it can find dependencies without needing to set LD_LIBRARY_PATH # For more information: http://www.cmake.org/Wiki/CMake_RPATH_handling. if (CORECLR_SET_RPATH) + set(CMAKE_INSTALL_RPATH "${CORECLR_SET_RPATH}") +else() set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) if(CLR_CMAKE_PLATFORM_DARWIN) set(CMAKE_INSTALL_RPATH "@loader_path") else() - #set(CMAKE_INSTALL_RPATH "\$ORIGIN") - set(CMAKE_INSTALL_RPATH "${CORECLR_SET_RPATH}") - endif(CLR_CMAKE_PLATFORM_DARWIN) + set(CMAKE_INSTALL_RPATH "\$ORIGIN") + endif() endif() add_definitions(-DPAL_STDCPP_COMPAT)