blob: 9bbe8d3ee089608214cfc96f9740f7bff6cef7a7 [file] [log] [blame]
[General]
Check the logs! Very few things will fail without putting something in the logs.
If they do, that is a bug unless our code is never getting run (there are
innumerable ways that could happen, but it generally doesn't).
To check the logs, run `log_displayer` if `binary_log_writer` has been started
or just run `log_streamer` if you want to do simple testing without writing
logs to a file. See `log_displayer --help` for options.
All of the binaries get put in the same place. That is
src/outputs/prime/outputs on the build machine and
/home/driver/robot_code/bin on linux.
[Startup]
Low level startup errors often end up in
/tmp/aos_fatal_error.* under linux. Also helpful are the /tmp/starter*_std*
files (if the standard start scripts are being used).
If lots of the /tmp/starter_*std* files (with different numbers) are being
created, that means that starter_exe is dying constantly.
[Anything Not Running]
Check starter_exe's log messages. They might mention that it is constantly dying
on startup and being restarted.
[Control Loop(s) Not Working]
Are robot_state messages going out? An aos::JoystickInput (often
joystick_reader) should be sending them.
Also, kFakeJoysticks in aos/input/joystick_reader.cc has to be set to
false in order for anything to get output.
Is it being fed goal messages?
Is it getting position messages?
Is something looking at the output and doing something useful with it?
[No Driver Station Packets]
TODO(brians): This is out of date.
Check to make sure that JSR (a cRIO-side task) is saying that it's sending
messages. Also check JoystickReader (or whatever inherits from
aos::JoystickInput) is running and see if it's receiving anything.
[Attaching a Debugger]
Attaching GDB to an existing robot code process works like normal (you have to
su root first because that's what all of the code currently runs as).
If a process is dying repeatedly, the easiest way to debug it is to kill
starter_loop.sh and (it has to be after that) starter_exe. After doing that,
NOTHING will get restarted (including the normal restart after changing a
binary) so that you can start a process under GDB like usual (shouldn't need
anything special if done as root).