[Haifux] some addendums to today's gdb meeting
guy keren
choo at actcom.co.il
Mon May 4 23:04:30 MSD 2009
1. clarification: the command 'watch *(char*)0x65476 == 0'
puts a hardware watch-point for a single byte at the given address.
if you want to find a change to an item with a different size (e.g. 4
bytes), use a different cast: 'watch *(int*)0x65476 == 0'
2. regarding the 'x' command and endianess: you can control the
assumed-endianness of gdb using 'set endian big', or 'set endian
little' (the default is 'auto'). use 'show endian' to see the current
value of this setting.
3. regarding watch points: you can use 'rwatch <expression>' to be
notified whenever the value of this expression is _read_, so you can
find when someone access a certain memory area (for example).
4. in general 'help <cmd>' or 'help <cmd subcmd....>' gives help about
this command.
5. regarding checkpoints and fork on windows - indeed it looks like
cygwin's fork copies all the memory to the new process - which means
that its a very expensive system call. thus, if your process has a very
large footprint, or you try to make too many checkpoints - you'll hit
swapping or the virtual memory limitation of your machine.
6. regarding re-creating a live process from a core file - some people
already thought about this (as usual). here is an example (i didn't try
this yet):
http://www.geocities.com/asimshankar/checkpointing/
i think there was something else we wanted an answer for - does anyone
remember?
--guy
More information about the Haifux
mailing list