Since LinICE is heavily based on SoftIce, you may want to search the web for any references to its commands and how-to-use texts. Here are some of the texts that I've found quickly; they are fairly old, but they will give you most of the information and reference needed to help you going with LinICE (ignore Windows-specific portions): http://softice1.free.fr/docs/NuMega - Using SoftICE.pdfÂ
LinICE comes with a document that explains layout, compile, setup and basic options for LinICE. Features that differ or are unique are also described there. Read the manual even if you already know how to use SoftIce.
If you find a good command line reference on the web, please email me the link, so I can include it here!
Currently, kernels 2.6.9 and above. Several people offered to tackle this problem, but there is no definite code solution yet. Next, kernels compiled with the option 4GB which place kernel symbols at the low address (unlike 80000000 or C0000000, if your symbols are listed at the address of 02000000+, LinICE will currently not work with it).
LinICE will not work in Super-VGA / console framebuffer modes.
Try to enable all messages (increase verbose level to 3). Run the Linsym with the option -v 3
# ./linsym -i -v 3
Next, make sure that /dev/ice does not exist. Sometimes an unsuccessful load creates it and does not delete it.
You have to be a root user to run Linsym.
Then, it could be an incorrect System.map file is being used, so that some important symbols don't match. Use the option -m with the Linsym to specify the path to the correct System.map.
If you have a 2.6 kernel with a distribution like FedoraCore2, you are out of luck (for now). It's System.map file does not export some important symbols required for LinICE to load. 2.6 support has been tested on Debian. You should be ok for kernels 2.6.8 and below with any other distributions. LinICE will not work with kernels 2.6.9 and above due to some significant kernel changes (this includes FedoraCore3.) This is one area where you could volunteer to help!
It could be that your console runs in Super-VGA / graphics mode. LinICE does not support SVGA modes (or console graphics modes). Only pure text VGA modes, monochrome and X-Windows frame buffers are supported (and remote VT100 serial terminals).
Please read the documentation first. The most likely cause is the USB keyboard. Plug in the PS/2 keyboard instead, if you can. Then read the documentation.
If you loaded it under X-Window, press F5 and then use xice to make it pop up.
Press Ctrl-Q to break into LinICE. You can change it by using the "altkey" command.
At the moment, the only way to break into a user app is to hard code an INT3 inside it. You may use this define:
#define INT(_x) __asm__ __volatile__("int %0" :: "g" (_x))
INT(3);
The same trick will work for a module as well; however, if you load its symbols, the debugger will break at its init_module() entry point by default.