Skip to content

Tag: debugging

Cleanup output from GDB memory dump

We lost a configuration file which we were able to recover some of the data with a gdb memory dump but many important parts of the file are buried in memory noise. Is there a way to cleanup the dump files? Example output Answer The strings command was able to remove the garbage from the file.

How to get the gdb call stack trace?

I have a core dump and a file where debug information is stored, can I use gdb without using an executable file to get a call stack with the name of functions and lines? Answer can I use gdb without using an executable file to get a call stack with the name of functions and lines? At least on Linux/x86_64,

Debugging Linux process hangs, which code is it running?

I have a process running on a very weak Linux embedded device, which could not run gdb / gdb server on itself. I let it provoking a function X from a shared library repeatedly (there are also some others process calling it at the same time with much less frequency), it usually hangs somewhere inside the shared library after 1

Why does the Code run on Linux but not on Windows?

Well, I wrote a little Program that should generate random values, but no value should be in the output file twice. On Linux it’s running perfectly, but on Windows it just runs infinity long on the 32768th value. That means, that cmd is open but nothing really happens from that point. I already did debug it 30 times by now

Cannot insert breakpoints. Addresses with low values

I’m trying to debug this simple C program: But when I disassemble the main function I get this: And this is already pretty strange because addresses starts with a prefix of 4… for 32 bit executables and 8… for 64 bit executables I think. But going on I then put a breakpoint: I run it and I get this error

what is the . (dot) and + (plus) after the lock name in the kernel crash (task hung)?

I’ve found that there are dot and plus signs in the kernel crash when the kernel detected task hung. Showing all locks held in the system: 2 locks held by khungtaskd/737: #0: (rcu_read_lock){….}, at: [<00000000eaa2e968>] check_hung_uninterruptible_tasks kernel/hung_task.c:175 [inline] #0: (rcu_read_lock){….}, at: [<00000000eaa2e968>] watchdog+0x1c5/0xd60 kernel/hung_task.c:249 #1: (tasklist_lock){.+.+}, at: [<000000005ed461f9>] debug_show_all_locks+0xd3/0x400 kernel/locking/lockdep.c:4464 What is the dot and plus signs between the brackets