 So, hello on the presentation TDB, which will be mostly in 7.13. You can see here agenda for this presentation. So I can go to the first point. Currently what you can see in Federa25 and current Eclipse CDT 9.1. Zato je nekaj pridljan, da bo nekaj pridljan. Avstak je, da ba ste izgledati, da bo začel na branča. Nekaj nekaj pridljan, da bo začel na branča, da se predrešel ima vzne. Nekaj nekaj pridljan, začel nekaj pridljan. In nekaj ne bo, da je to vseč vseč. Nelj, da se v federa 26 in nekaj eklips, je to vseč zelo vrti. V federa rohajt, kaj se je vseč, že gdb konzol je vseč vseč vseč, tako nekaj se počet, Kaj je je teknikaj v Fedora 25, in je gdbe, v možetnih modej, v možetnih modej in spesivnih komandov je odmah izglednjo in z komandov na prejelji. Nel ne, v nožnej Gdbe. Prejel, ne, z nožnej Gdbe, je vse počke, ker je... Gražem zelo. Ne ne zelo že je veliko tega. Zelo je se vnjemno tega, ki barem delujem. Pnečno nastavljamo z prohem s historijama, tukaj je zrčen Latinozotran. Zelo je gdb dabačne. Tektivnih dobro sizeskih gdb. Olima sample. manje, ko sem je naplikala, kaj som načinaj koment, ko bi それ na konstal varstourage, je zaštelje ten mončak se opetnega. Vse možido se zaštela, ki so bojimo tak v proirenih. Znesem tudi bolj v takročnimi komentinih. Tako čevil, da se tukaj način, ampeno se mora se opetnega bojima za opetno. Precega je, da teva je bude cel, nepokojo je, kako je, ..to, pa on je kako je vendiv. It gets parsed by the lexical analyzer in the expression evaluator inside GB completely. So, that means the GB needs to know all the features of the language and all the extensions of GCC, which it does not. Therefore, many more complicated expressions will fail to evaluate currently in GDB, while sure the more logical way is to run GCC to compile the string, vkratit sa tom, ki je ta HD, kako je, taj neko so evratit, si jo da storite pravost v delo, bojo prekreatiti konec. Sa bil, da sedaj tega si vse zazal, da počukaj bil, še se ta uro taj neko se ravala in kako je lahko v ampak veliko, da se vse bo nimi, pa tako položite, da so v spotsijane, na pomečnjane in za načini, da pa jel za vse platit, da je to, nekako je dobro, očekaj je, da načino, očekaj se posta ko si nazaj, nekako je dobro, očekaj je za način, kaj smo prišličili v i-fieldi, kaj smo prišličili, ali tudi je veliko garbič, kaj smo prišličili, tudi je index big array, tudi je nekaj helperkeš. Kaj smo prišličili gdb in prišličili. Vzeliči seh lzir, ovoj pojant? Vzeliči seh lzir v stvjegi, kaj je vzeliči v stvjegi. Kaj smo prišličili, da je vzeliči vzeliči vzeliči. entering nodes, but here is all garbage and we don't see the next element at all. So we can work around it we can print less elements. But still most of the display data is garbage. And here is one, zero, one, but we don't see all the 10 elements of the array. So some other possibility we can try to write Python pre-preprint, so we can see it works. in naredim, če je bila tudi nekaj, ale za nekaj lepoh debačnih komandov, zelo počasite na tvojej titulji, da je naša češa neč konvinična. Zelo začasite, na svetu taj, da je nekaj specirur, nekaj nekaj radila na titulji, till the side of of the pitan, you need to also know the gdb pitan binding. Like here these are from the API of gdb and this is going to be expected from average c++ coder. There are some other possibilities how to print it and one can give up this gdb. So we should in fact, in c++ we could print it very easily. Boom Sebca, cant see it here. This is standard native C++ command, and it will display it similarly in the data. It sure can print more fields than just the eye here. But here you can print it very easily. What we're interested in and want to be there with it�asha. Sure this feature is not just for printing, but you can even do some more advanced features. ako se je zadevednjeto počkega complaints, še je bolj kompijent, k sadness še se pripečujemo v�učenje, ne? Dobro, boš na stavne Navangelo v pake, ko počkers nabijkomans na plena C, tako jo na 1.25 in 2.22 in z svojimi kompijentami in kompijentami tido, kako, nekaj je predstavno tako pospovalo, jih je zemljenje več, maybe Fedora 26, or rather Fedora 27, this is error from GDB. One can see 4C++ here, here is just workaround, instead of STD map, I used to here some plain array, so it works even with current GDB, but it's not usable in practice as you probably won't be replacing all the containers into arrays just to use GDB. In the future, this integration with GCC has more use cases, after they will be done, as you can see that it should be used for the default print command, not just by the explicit compile print. Just there will be then one problem that currently, even if you load the core file, GDB internally can evaluate it and print an expression you want, but when you have a core file and GCC compiles for you some small code, small function with the expression, core file cannot execute any native code because it does not have any process. One of the possibilities is to create some artificial process for any core file to somehow reanimate it. Another possibility would be some interpreter of GCC GIMPL or RTL, so that could run even architecture independently, but I don't know what will be done. This is not even supported by LDB currently. Another possible such feature is fast additional breakpoints because when you have, for example, cycle is running for one million times and something bad happens on the after half million runs of the cycle and you put some conditional breakpoints with current GDB there, you can give it up because it will take maybe one hour or so because each cycle evaluation of the expression from GDB is too slow. In reality, the expression should be compiled into inferior and GDB should be called by a breakpoint only after the half million cycles happened because all the interaction with debugger over P-traces is very slow. Another possibility to implement it is edit and continue, which is under this name already implemented in Microsoft Visual C-Pass Pass and it was implemented in Apple Xcode as fix and continue when it was still using older versions of GDB. This is useful because in some enterprise applications, for example, when the database application is starting for ten minutes and then you find some simple bug that there is number one instead of number two, you want to fix it and now you have to restart it and wait another ten minutes before the enterprise application starts and all the databases are initialized and open. So Microsoft Visual Studio will allow you to just recompile the single function and reinsert it as a shared library into the inferior and insert some jump to the new function implementation and it will start running for the same instance with the newly compiled fixed code. Sure, this is also future. Another progress in GDB is to unify the code base. Currently probably most commonly run local GDB either for newly spawned programs or for attachments for some programs but there is also a possibility to run GDB server. This is used typically for remote machines or embedded boxes. Again, GDB server can also spawn a new program or attach to some program but you can see that this means that a lot of functionality in GDB has to be implemented twice in plain GDB and once in GDB server. This is not much maintainable. So now the code base is being merged together and in the future there should be always running GDB server even in the local case and GDB can attach even to local GDB server. You can see here there is already syntax how to do it for the local programs. Here you can insert even SSH to some remote host for the local case you just run GDB server this way and you can debug it easily. In the future sure it should be even easier. Even easier. So here is some list of the features which were originally two years ago only in GDB native and not available with GDB server. And you can see now the features are being merged and here should remain no features in the native GDB because it will use only GDB server in all cases in the future. Here it is listed again and here are the features already merged and done and still these are some minor features which need to be merged as the expansion is not implemented and also sharing of the current director is not implemented yet. Also support of P3P. Another feature is about container debugging. All this is a lot about containers. So some work has been already done for debugging processes running inside the container which is not so easy as it may look because containers use separate PID namespace. So typically the spawned first program in container has PID1 inside the container but on the host system it is for example PID 10000 and also it has separate namespace separate file system in the truth and you can see that with all the GDB if you attach to the program from the container it will try to load shared libraries from the host system which may not match because it's different operating system version. So currently GDB always prefixes all the files with the target prefix which is not for local normal processes in containers it will properly load the files from the truth from the namespace of the program running in the container. Now there is work in progress being done on the last issue. Currently it is most easily and most if you have multi-streaded program to always run GDB server for the inside the container for the program but it has one big disadvantage for example in the container the GDB server is not yet installed so you must modify somehow and add something to the container which is not much convenient but technically sure GDB should be able to debug it without any helper of GDB server from the host system but there is no pretty big problem with lib thread DB if you know lib thread DB it is debugging library for threads there must be always matching lib pthread which is the native normal implementation of thread in glipc and it must match the lib thread DB of the same version as lib thread DB knows various internal offsets of glipc how to debug the threads how to find in pthread t some various fields this is important because in federa we know only glipc but otherwise there exist also other libc implementations such as bionic and uc libc from some that micro for embedded systems they use their own lib thread DB and also problem that lib thread DB is executable so GDB or GDB server has to load it but if you have a container one of the reasons to run container is to have a security separation and so you need to load glip thread DB from inside the container but this is insecure so if you are running on a host hosting the container GDB and you would load insecure code from inside the container you don't have to run the container at all so you are already owned by the container at that moment so there has been idea to make it safer and now there is a new project called infinity and the infinity project has a new bytecode which is based on dwarf expression bytecode with some extensions which can be safely executed by GDB and the bytecode contains all the information how to access p-thread data the threading data and the bytecode can be created specific for each implementation of glip-thread, like uclibs or bionic and maybe you may ask why there is lib thread DB I forgot to say why there is lib thread DB at all that GDB could do it all but the GDB would have to have specific support for every specific variant for glipc specific support for uclibc and then it may it just doesn't scale so in the future it should go through infinity and this problem should be resolved but for practical use case currently you should run GDB server inside containers it is the most easy way most safe way and no unless short description about var5 but you did already hear about it no from GCC both LVM and GCC support var5 now it is still being standardized var5 will be even smaller var then it was var4 it was at the GCC presentation was discussed that it's mostly the same like Federa had already extensions from Red Hat engineers which were called GNU extensions and they have been mostly just renamed now for the standard in var5 there is only completelj about GDB index which is nowhere named to debug names and it has completely different format you can see draft on the standard side for var which should be mostly the same there are many changes from the last draft last draft there so Federa 26 which is raw height, no GCC is already okay for GDB in Federa it is not yet compatible with var5 even for reading but I have patches for it of trunk so these days it should be somehow merged so if you really need it maybe I can push it to Federa earlier but it's not yet approved upstream and the last issue is that even after Federa currently switches GCC and GDB to var5 it is not yet end because not all the tools support var5 yet so for example currently for