Re: [Beginner Question] How to print the call link graph?

2023-07-01 Thread Erik Wienhold
> 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?

2023-07-01 Thread Garfield Lewis
> 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?

2023-07-01 Thread Julien Rouhaud
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?

2023-07-01 Thread Ron

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?

2023-07-01 Thread Wen Yi
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

2023-07-01 Thread Julien Rouhaud
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.