Re: [Beginner Question] How to print the call link graph?
> On 01/07/2023 09:10 CEST Wen Yi wrote: > > I use the gdb to track the postgres like this: > > ... > pq_getbyte () at pqcomm.c:980 > 980 in pqcomm.c > (gdb) next > 985 in pqcomm.c > (gdb) next > 986 in pqcomm.c > (gdb) next > SocketBackend (inBuf=0x7ffc8f7e1310) at postgres.c:372 > > 372 postgres.c: Directory not empty. > (gdb) next > 403 in postgres.c > (gdb) next > 406 in postgres.c > (gdb) next > 407 in postgres.c > (gdb) next > ... > > But the question is: > It's too slow to input 'next' to run the postgres, I used to try to use the > 'continut', but the gdb will run the postgres directly and not print the > function name and code line > > I want to it print like this: > > ... -> pq_getbyte () at pqcomm.c:980 -> SocketBackend (inBuf=0x7ffc8f7e1310) > at postgres.c:372 -> ... > > Can someone provide me some advice? > Thanks in advance! The Postgres wiki has a page on this topic: https://wiki.postgresql.org/wiki/Getting_a_stack_trace_of_a_running_PostgreSQL_backend_on_Linux/BSD Look for "backtrace" and gdb's bt command. -- Erik
Re: [EXT] Re: [Beginner Question] How to print the call link graph?
> If no one here can, then superuser.com, unix.stackexchange.com or > stackoverflow.com should be able to. (Just don't cross-post...) If I understand the question this is a GDB question, correct? If so, I would simply set a breakpoint in GDB at that function like so: b SocketBackend commands bt 2 end this will break then print a backtrace of the last 2 functions (you can remove the 2 to get a full backtrace or change it to some other value). You could also add a continue (c) after the bt to have it run and just print out the backtrace until all is done (save the result to a file using the set logging command) -- Regards, Garfield A. Lewis
Re: [Beginner Question] How to print the call link graph?
On Sat, Jul 01, 2023 at 03:10:27PM +0800, Wen Yi wrote: > Hi community, > I use the gdb to track the postgres like this: > > ... > > pq_getbyte () at pqcomm.c:980 > 980 in pqcomm.c > (gdb) next > [...] > It's too slow to input 'next' to run the postgres, I used to try to use > the 'continut', but the gdb will run the postgres directly and not > print the function name and code line > > > I want to it print like this: > > > ... - pq_getbyte () at pqcomm.c:980 - SocketBackend > (inBuf=0x7ffc8f7e1310) at postgres.c:372 - ... > > Can someone provide me some advice? > Thanks in advance! I'm not sure what you want to do exactly, but just in case the usual way to do is to put a breakpoint at the function you're interested in (e.g. "break exec_simple_query"), or a specific line (e.g. "break filename.c:42"), and then show the backtrace (backtrace or just bt).
Re: [Beginner Question] How to print the call link graph?
On 7/1/23 02:10, Wen Yi wrote: Hi community, I use the gdb to track the postgres like this: ... pq_getbyte () at pqcomm.c:980 980 in pqcomm.c (gdb) next 985 in pqcomm.c (gdb) next 986 in pqcomm.c (gdb) next SocketBackend (inBuf=0x7ffc8f7e1310) at postgres.c:372 372 postgres.c: Directory not empty. (gdb) next 403 in postgres.c (gdb) next 406 in postgres.c (gdb) next 407 in postgres.c (gdb) next ... But the question is: It's too slow to input 'next' to run the postgres, I used to try to use the 'continut', but the gdb will run the postgres directly and not print the function name and code line I want to it print like this: ... -> pq_getbyte () at pqcomm.c:980 -> SocketBackend (inBuf=0x7ffc8f7e1310) at postgres.c:372 -> ... Can someone provide me some advice? If no one here can, then superuser.com, unix.stackexchange.com or stackoverflow.com should be able to. (Just don't cross-post...) -- Born in Arizona, moved to Babylonia.
[Beginner Question] How to print the call link graph?
Hi community, I use the gdb to track the postgres like this: ... pq_getbyte () at pqcomm.c:980 980 in pqcomm.c (gdb) next 985 in pqcomm.c (gdb) next 986 in pqcomm.c (gdb) next SocketBackend (inBuf=0x7ffc8f7e1310) at postgres.c:372 372 postgres.c: Directory not empty. (gdb) next 403 in postgres.c (gdb) next 406 in postgres.c (gdb) next 407 in postgres.c (gdb) next ... But the question is: It's too slow to input 'next' to run the postgres, I used to try to use the 'continut', but the gdb will run the postgres directly and not print the function name and code line I want to it print like this: ... - pq_getbyte () at pqcomm.c:980 - SocketBackend (inBuf=0x7ffc8f7e1310) at postgres.c:372 - ... Can someone provide me some advice? Thanks in advance! Yours, Wen Yi
Re: psql and pgpass.conf on Windows
On Sat, Jul 01, 2023 at 01:40:49AM -0400, Kirk Wolak wrote: > > FWIW, I discovered that psql is case sensitive on the dbname, without > quoting it! That's on purpose, since shell quoting behavior is entirely different from SQL. The quotes are discarded by the shell, so it would otherwise require users doing something like psql -d '"MyDbName"' The behavior is the same for all client tools, and other object arguments like username.