|
|
(7 intermediate revisions by one other user not shown) |
Line 1: |
Line 1: |
| This page is a starting point for debugging kio_fish. Please also read [[Development/Tutorials/Debugging/Debugging_IOSlaves|how to debug IO slaves generically]].
| | Moved to the [https://community.kde.org/Guidelines_and_HOWTOs/Debugging/Debugging_IOSlaves/Debugging_kio_fish Community wiki]. |
| | |
| = Bugs =
| |
| Interesting bugs to get into the topic
| |
| * [http://bugs.kde.org/show_bug.cgi?id=147948 copying via fish stalls]
| |
| * [http://bugs.kde.org/show_bug.cgi?id=145123 fish protocol dies unexpectedly]
| |
| | |
| = Overview =
| |
| When you point your konqueror to fish://''user''@''target'', [http://websvn.kde.org/trunk/KDE/kdebase/runtime/kioslave/fish/fish.cpp?view=log the fish kioslave] opens a process that calls the executable ssh. If a password is needed, this question is passed on to you (search for "password" in fish.cpp). Then a [http://websvn.kde.org/trunk/KDE/kdebase/runtime/kioslave/fish/fish.pl?view=log perl script] is copied over to the target host and executed there. On the target host, the file is named .fishsrv.pl. This perl script is compiled into your binary kio_fish.o. If you want to change it sustainably, you will have to change fish.pl in your source dir and then compile and install the directory [http://websvn.kde.org/trunk/KDE/kdebase/runtime/kioslave/fish/ kioslave/fish].
| |
| | |
| The perl script, running on the target computer, is (t)here to execute fish commands like LIST, STAT, WRITE and APPEND. They are sent from fish.cpp running on the source computer.
| |
| | |
| = Test case =
| |
| If you want a test case to get some debugging output from kio_fish, get a fresh checkout of kdebase. There you find a test case in runtime/kioslave/fish/tests. [[User:Tstaerk|I]] had the problem that the STOR commands from the fish kioslave were not logged as long as I had localhost as target computer. When I changed it to my local address (192.168.0.7), it worked.
| |
| | |
| = Logging =
| |
| You may want to switch on logging for fish.cpp and for fish.pl.
| |
| | |
| In this example, we want to log the output of fish.cpp to /tmp/debugfish. As described at [[Development/Tutorials/Debugging/Debugging_IOSlaves|Debugging_IOSlaves]], change your kdebugrc, e.g. like that:
| |
| cat >> $(kde4-config --path config | sed "s/.*://")kdebugrc << EOF
| |
| [7127]
| |
| InfoOutput=0
| |
| InfoFilename=/tmp/debugfish
| |
| EOF
| |
| | |
| In this example, we want to log the output of fish.pl to /tmp/kio_fish.debug.log so we change the 14th line of fish.pl to
| |
| open(DEBUG,">>/tmp/kio_fish.debug.log");
| |
| and uncomment all the lines containing DEBUG.
| |
| | |
| = Manually testing fish =
| |
| To test fish manually, call ~/.fishsrv.pl. The fish server will ask you in friendly words (it says ### 100) to transmit its own code, followed by a line __END__. Transmit it. Then the fish server is ready to talk with you (it says ### 200). You can have a conversation like this:
| |
| itchy:~ # (echo __END__; cat)| cat .fishsrv.pl - | perl .fishsrv.pl
| |
| ### 100 transfer fish server
| |
| ### 200
| |
| #VER
| |
| VER 0.0.3 copy lscount lslinks lsmime exec stat
| |
| ### 200
| |
| #WRITE 0 6 /tmp/file1
| |
|
| |
| ### 100
| |
| 123456
| |
| ### 200
| |
| itchy:~ # cat /tmp/file1
| |
| 123456itchy:~ #
| |
| | |
| == The WRITE command ==
| |
| Example:
| |
| #WRITE 0 6 /tmp/file1
| |
| Syntax:
| |
| #WRITE ''start'' ''end'' ''file''
| |
| Reads the ''end''-''start'' bytes from STDIN and writes them into file ''file'' starting at position ''start'' ending at position ''end''.
| |