Hello everyone,
I have been struggling a few days to achieve using gdb on msys2 mingw64. In case anyone is interested, here is how I finally succeed in using gdb. Note that I am a newbee on both autotools and pd so maybe there is a much more straightforward way to do so.
Edit msw/Makefile.am to add -n for non stripping binaries : ... $(SH) $(top_srcdir)/msw/msw-app.sh -n --sources --builddir $(top_builddir) $(VERSION) ...
Type following commands $ ./autogen.sh $ cd build $ ../configure --enable-debug CFLAGS="-g" $ make $ make app
The generated pd.exe in pd-0.53.1 directory correctly execute but with no symbol in it. To retrieve symbol use libtool --mode=execute as follows :
$ libtool --mode=execute gdb --args pd-0.53.1/bin/pd.exe ... Reading symbols from pd-0.53.1/bin/pd.exe... (gdb) b main Breakpoint 1 at 0x140001464: file ../../src/s_entry.c, line 30. (gdb)
And this is it !
I'm using following pure-data sources : branch master, last commit : commit 3fde7100fcfb8fd0debb4e5f1b4c264e053a6254 Thu Apr 20 16:36:54 2023 +0200
Hi,
yes, "make app" strips the binaries by default.
Since autotools/libtool is incredibly slow on Windows, I typically only do "make app" once in the beginning; in my IDE I have a added a custom build step "cp ./src/pd.dll ./pd-0.x.x/bin" that just copies the (unstripped) Pd DLL into the bin folder (assuming I only want to test/debug the Pd core and not one of the externals in "extra").
Cheers,
Christof
On 18.05.2023 12:45, Pierre Mallard wrote:
Hello everyone,
I have been struggling a few days to achieve using gdb on msys2 mingw64. In case anyone is interested, here is how I finally succeed in using gdb. Note that I am a newbee on both autotools and pd so maybe there is a much more straightforward way to do so.
Edit msw/Makefile.am to add -n for non stripping binaries : ... $(SH) $(top_srcdir)/msw/msw-app.sh -n --sources --builddir $(top_builddir) $(VERSION) ...
Type following commands $ ./autogen.sh $ cd build $ ../configure --enable-debug CFLAGS="-g" $ make $ make app
The generated pd.exe in pd-0.53.1 directory correctly execute but with no symbol in it. To retrieve symbol use libtool --mode=execute as follows :
$ libtool --mode=execute gdb --args pd-0.53.1/bin/pd.exe ... Reading symbols from pd-0.53.1/bin/pd.exe... (gdb) b main Breakpoint 1 at 0x140001464: file ../../src/s_entry.c, line 30. (gdb)
And this is it !
I'm using following pure-data sources : branch master, last commit : commit 3fde7100fcfb8fd0debb4e5f1b4c264e053a6254 Thu Apr 20 16:36:54 2023 +0200
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Hello Chris and everyone,
Thanks for the trick, it could be nice to complete the wiki on http://puredata.info/docs/developer/BuildingPd with at least your approach (mine would require to patch msw/Makefile.am) Let me know if it is worth it, I don't have an account there.
Bye
Le jeu. 18 mai 2023 à 13:37, Christof Ressi info@christofressi.com a écrit :
Hi,
yes, "make app" strips the binaries by default.
Since autotools/libtool is incredibly slow on Windows, I typically only do "make app" once in the beginning; in my IDE I have a added a custom build step "cp ./src/pd.dll ./pd-0.x.x/bin" that just copies the (unstripped) Pd DLL into the bin folder (assuming I only want to test/debug the Pd core and not one of the externals in "extra").
Cheers,
Christof
On 18.05.2023 12:45, Pierre Mallard wrote:
Hello everyone,
I have been struggling a few days to achieve using gdb on msys2 mingw64. In case anyone is interested, here is how I finally succeed in using gdb. Note that I am a newbee on both autotools and pd so maybe there is a much more straightforward way to do so.
Edit msw/Makefile.am to add -n for non stripping binaries : ... $(SH) $(top_srcdir)/msw/msw-app.sh -n --sources --builddir $(top_builddir) $(VERSION) ...
Type following commands $ ./autogen.sh $ cd build $ ../configure --enable-debug CFLAGS="-g" $ make $ make app
The generated pd.exe in pd-0.53.1 directory correctly execute but with no symbol in it. To retrieve symbol use libtool --mode=execute as follows :
$ libtool --mode=execute gdb --args pd-0.53.1/bin/pd.exe ... Reading symbols from pd-0.53.1/bin/pd.exe... (gdb) b main Breakpoint 1 at 0x140001464: file ../../src/s_entry.c, line 30. (gdb)
And this is it !
I'm using following pure-data sources : branch master, last commit : commit 3fde7100fcfb8fd0debb4e5f1b4c264e053a6254 Thu Apr 20 16:36:54 2023 +0200
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev
Thanks for the trick, it could be nice to complete the wiki on http://puredata.info/docs/developer/BuildingPd with at least your approach
That is just an ugly hack and I wouldn't publicy advertize it :-)
BTW, if you can endure the slowness, you can also manually call the 'msw-app.sh' script like this:
msw/msw-app.sh -s -n <version_suffix>
---
I think the best solution would be to actually support running Pd directly from the source tree (like we can already do on Linux and macOS). Unfortunately, this is not completely trivial. I just opened a ticket for this: https://github.com/pure-data/pure-data/issues/1957
Christof
On 19.05.2023 09:17, Pierre Mallard wrote:
Hello Chris and everyone,
Thanks for the trick, it could be nice to complete the wiki on http://puredata.info/docs/developer/BuildingPd with at least your approach (mine would require to patch msw/Makefile.am) Let me know if it is worth it, I don't have an account there.
Bye
Le jeu. 18 mai 2023 à 13:37, Christof Ressi info@christofressi.com a écrit :
Hi, yes, "make app" strips the binaries by default. Since autotools/libtool is incredibly slow on Windows, I typically only do "make app" once in the beginning; in my IDE I have a added a custom build step "cp ./src/pd.dll ./pd-0.x.x/bin" that just copies the (unstripped) Pd DLL into the bin folder (assuming I only want to test/debug the Pd core and not one of the externals in "extra"). Cheers, Christof On 18.05.2023 12:45, Pierre Mallard wrote: > Hello everyone, > > I have been struggling a few days to achieve using gdb on msys2 mingw64. > In case anyone is interested, here is how I finally succeed in using > gdb. Note that I am a newbee on both autotools and pd so maybe there > is a much more straightforward way to do so. > > Edit msw/Makefile.am to add -n for non stripping binaries : > ... > $(SH) $(top_srcdir)/msw/msw-app.sh -n --sources --builddir > $(top_builddir) $(VERSION) > ... > > Type following commands > $ ./autogen.sh > $ cd build > $ ../configure --enable-debug CFLAGS="-g" > $ make > $ make app > > The generated pd.exe in pd-0.53.1 directory correctly execute but with > no symbol in it. To retrieve symbol use libtool --mode=execute as > follows : > > $ libtool --mode=execute gdb --args pd-0.53.1/bin/pd.exe > ... > Reading symbols from pd-0.53.1/bin/pd.exe... > (gdb) b main > Breakpoint 1 at 0x140001464: file ../../src/s_entry.c, line 30. > (gdb) > > And this is it ! > > I'm using following pure-data sources : > branch master, last commit : > commit 3fde7100fcfb8fd0debb4e5f1b4c264e053a6254 > Thu Apr 20 16:36:54 2023 +0200 > > > _______________________________________________ > Pd-dev mailing list > Pd-dev@lists.iem.at > https://lists.puredata.info/listinfo/pd-dev _______________________________________________ Pd-dev mailing list Pd-dev@lists.iem.at https://lists.puredata.info/listinfo/pd-dev