Pipe based communication between debugee and managed debugger on Linux
authorEugene Zemtsov <Eugene.Zemtsov@microsoft.com>
Tue, 17 Feb 2015 05:58:15 +0000 (21:58 -0800)
committerEugene Zemtsov <Eugene.Zemtsov@microsoft.com>
Tue, 3 Mar 2015 22:39:55 +0000 (14:39 -0800)
commit1b6c5406b302c496320d6012dae1342c699c2290
treeaaba609c18f194c68c861c6afc516218da3f424d
parente9f40ce78c9443819829870d94af0239adc16030
Pipe based communication between debugee and managed debugger on Linux

Goal of this change is to make managed debugging on Linux possible. (It is not fully achieved, but we're getting there)

So far our provision for debugging on Linux is somewhat different from debugging on Windows.
Instead of using WaitForDebugEvent and RaiseException as means of communication between debugger and debuggee, we're gonna use pipes.
Thankfully from old times of Silverlight Mac debugging we had debugging via network sockets under ifdefs FEATURE_DBGIPC_TRANSPORT_DI and FEATURE_DBGIPC_TRANSPORT_VM.
So this change is taking that old way of debugging, changing sockets for network pipes, removes lots of unused stuff and implements whatever is missing on Linux.

Testing:
Due to infrastructural issues I wasn't able to test debugging on Linux yet. So my testing consistent of
1. End to end net pipe debugging on Windows
2. Testing of twowaypipe implementation on Linux
3. Testing of search for loaded CoreCLR module on Linux.
53 files changed:
.gitignore
CMakeLists.txt
src/debug/daccess/ddunpack.cpp [deleted file]
src/debug/daccess/ddunpack.h [deleted file]
src/debug/debug-pal/.gitmirror [new file with mode: 0644]
src/debug/debug-pal/CMakeLists.txt [new file with mode: 0644]
src/debug/debug-pal/unix/.gitmirror [new file with mode: 0644]
src/debug/debug-pal/unix/dynamiclibaddress.cpp [new file with mode: 0644]
src/debug/debug-pal/unix/twowaypipe.cpp [new file with mode: 0644]
src/debug/debug-pal/unix/windefs.h [new file with mode: 0644]
src/debug/debug-pal/win/.gitmirror [new file with mode: 0644]
src/debug/debug-pal/win/twowaypipe.cpp [new file with mode: 0644]
src/debug/di/CMakeLists.txt
src/debug/di/cordb.cpp
src/debug/di/dbgtransportmanager.cpp
src/debug/di/dbgtransportmanager.h
src/debug/di/dbgtransportpipeline.cpp
src/debug/di/ddpack.cpp [deleted file]
src/debug/di/ddpack.h [deleted file]
src/debug/di/eventchannel.h
src/debug/di/platformspecific.cpp
src/debug/di/process.cpp
src/debug/di/remoteeventchannel.cpp
src/debug/di/shimlocaldatatarget.cpp
src/debug/di/shimpriv.h
src/debug/di/shimprocess.cpp
src/debug/di/shimremotedatatarget.cpp
src/debug/ee/CMakeLists.txt
src/debug/ee/dbgtransportproxy.cpp [deleted file]
src/debug/ee/dbgtransportproxy.h [deleted file]
src/debug/ee/ddunpack.cpp [deleted file]
src/debug/ee/ddunpack.h [deleted file]
src/debug/ee/debugger.cpp
src/debug/ee/debugger.h
src/debug/ee/inprocdac.cpp [deleted file]
src/debug/ee/inprocdac.h [deleted file]
src/debug/ee/rcthread.cpp
src/debug/inc/coreclrremotedebugginginterfaces.h
src/debug/inc/dbgtransportsession.h
src/debug/inc/ddmarshalutil.h
src/debug/inc/ddshared.h [deleted file]
src/debug/inc/debug-pal.h [new file with mode: 0644]
src/debug/inc/twowaypipe.h [new file with mode: 0644]
src/debug/shared/dbgtransportsession.cpp
src/debug/shared/utils.cpp
src/dlls/mscordbi/CMakeLists.txt
src/dlls/mscordbi/mscordbi.src
src/dlls/mscoree/coreclr/CMakeLists.txt
src/inc/clrconfigvalues.h
src/inc/dbgproxy.h [deleted file]
src/utilcode/CMakeLists.txt
src/utilcode/staticnohost/CMakeLists.txt
src/utilcode/winfix.cpp