SlideShare a Scribd company logo
Debugging of CPython processes
with gdb
PyCon PL 
October 15th, 2016 
Ossa, Poland
by Roman Podoliaka, Development Manager at Mirantis
twitter: @rpodoliaka 
email: roman.podoliaka@gmail.com 
blog: http://podoliaka.org 
slides: http://podoliaka.org/talks/
Goals of this talk
make gdb "a known unknown", so that you consider it
as an option in the future
highlight the common gotchas
Why debugging?
working on a huge open source cloud platform ‒
OpenStack
dozens of various (micro‒)services ‒ from REST APIs to
system daemons
new features are important, but high availability and
overall stability are even more important
continuous functional / performance / scale testing
numerous customer deployments
things break... pretty much all the time!
Caveats
The described debugging techniques assume that you use:
Linux
Darwin (macOS) must be similar, but lldb is the
debugger of choice there
Windows should work if you use a recent gdb build
with Python support enabled and have debugging
symbols for CPython
CPython 2.7+, 3.x
debugging scripts are interpreter‒specific, so no
PyPy/Jython/etc
2.6 works too, but up‒to‒date scripts are more
useful
What's wrong with pdb?
It's a nice and easy to use debugger, that should be your
default choice, but it:
can't attach to a running process
can't step into native code
can't be used for debugging of interpreter crashes (i.e.
core dumps)
Typical problems: hung process
a process is stuck in  S (sleeping)  state and does not
respond
 strace 'ing shows that it is trying to acquire a lock (i.e.
 futex(...) )
one needs a way to map this to the exact line in the
application code
especially important if you use cooperative concurrency
(i.e. asyncio, eventlet, gevent, etc)
Typical problems: going into native code
∼14000 unit tests, one or a few create a temporary
directory in the git working tree and do not clean up
after themselves. How do you identify those?
pdb does not allow to set breakpoints in built‒in
functions (like  os.makedirs() )
Typical problems: interpreter crashes
rarely happen in common applications
but still do with things like mod̲wsgi
or calls to native libraries via cffi
gdb
a general purpose debugger, that is mostly used for
debugging of C and C++ applications (supports
Objective‒C, Pascal, Rust and more)
allows attaching to a running process without
instrumenting it in advance
allows taking a core dump (a state of process memory
at a specific moment of time) to analyze it later
allows post‒mortem debugging of core dumps saved by
the kernel on process crash (if  ulimit  allows for it)
allows switching between threads
ptrace: the secret power behind gdb and
strace
#include <sys/ptrace.h> 
long ptrace(enum __ptrace_request request, pid_t pid, 
            void *addr, void *data); 
provides a means by which one process (the "tracer") may
observe and control the execution of another process (the
"tracee")
Debugging of interpreted languages
Python code is not compiled into a native binary for a
target platform. Instead there is an interpreter (e.g.
CPython, the reference implementation of Python),
which executes compiled byte‒code
when you attach to a Python process with gdb, you'll
debug the interpreter instance and introspect the
process state at the interpreter level, not the application
level
Debugging of interpreted languages:
interpreter level traceback
#0  0x00007fcce9b2faf3 in __epoll_wait_nocancel () at ../sysdeps
#1  0x0000000000435ef8 in pyepoll_poll (self=0x7fccdf54f240, args=<op
#2  0x000000000049968d in call_function (oparg=<optimized out>, pp_st
#3  PyEval_EvalFrameEx () at ../Python/ceval.c:2666 
#4  0x0000000000499ef2 in fast_function () at ../Python/ceval.c
#5  call_function () at ../Python/ceval.c:4041 
#6  PyEval_EvalFrameEx () at ../Python/ceval.c:2666 
Debugging of interpreted languages:
application level traceback
/usr/local/lib/python2.7/dist‐packages/eventlet/greenpool.py:82 
    `func(*args, **kwargs)` 
/opt/stack/neutron/neutron/agent/l3/agent.py:461 in _process_router_u
    `for rp, update in self._queue.each_update_to_next_router():`
/opt/stack/neutron/neutron/agent/l3/router_processing_queue.py:
    `next_update = self._queue.get()` 
/usr/local/lib/python2.7/dist‐packages/eventlet/queue.py:313 in
    `return waiter.wait()` 
/usr/local/lib/python2.7/dist‐packages/eventlet/queue.py:141 in
   `return get_hub().switch()` 
/usr/local/lib/python2.7/dist‐packages/eventlet/hubs/hub.py:294 
    `return self.greenlet.switch()` 
PyEval̲EvalFrameEx
PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) 
{ 
    /* variable declaration and initialization stuff */ 
    for (;;) { 
        /* do periodic housekeeping once in a few opcodes */ 
        opcode = NEXTOP(); 
        if (HAS_ARG(opcode)) oparg = NEXTARG(); 
        switch (opcode) { 
            case NOP: 
                goto fast_next_opcode; 
            /* lots of more complex opcode implementations */ 
            default: 
                /* become rather unhappy */ 
        } 
        /* handle exceptions or runtime errors, if any */ 
    } 
    /* we are finished, pop the frame stack */ 
    tstate‐>frame = f‐>f_back; 
    return retval; 
} 
blog post on CPython internals
gdb and Python
gdb can be built with Python support enabled
that essentially means one can extend gdb with Python
scripts
e.g. pretty‒printing for C++ STL containers:
https://sourceware.org/gdb/wiki/STLSupport
the very same mechanism is used for debugging of
CPython
Prerequisites: gdb with Python support
apt‐get install gdb 
or
yum install gdb 
or something else depending on the distro you use, then
gdb ‐ex 'python print("ok")' ‐ex quit | tail ‐n 1 
Prerequisites: CPython debugging symbols
debugging symbols are information on the data type of
each variable or function and the correspondence
between source line numbers and addresses in the
executable code
generated when applications are compiled with ‒g flag
passed to gcc/clang
consume a lot of disk space, thus, are usually stripped
from compiled binaries and shipped separately
Prerequisites: CPython debugging symbols
 apt‐get install python‐dbg 
or
 yum install python‐debuginfo
CentOS/RHEL put those into a separate repo
 debuginfo‐install python 
Some distros (like Arch Linux) do not ship debugging
symbols at all
Prerequisites: CPython scripts for gdb
developed in CPython code tree:
https://github.com/python/cpython/blob/master/Tools/
gdb/libpython.py
packaged and shipped by Linux distros
loaded by gdb automatically when debugging python
binary
can also be loaded manually like
 (gdb) source ~/src/cpython/Tools/gdb/libpython.py 
Debug a process from the start
gdb /usr/bin/python 
(gdb) run my_python_script.py 
Attach to a running process
gdb /usr/bin/python ‐p $PID 
or simply
gdb ‐p $PID 
(note: gdb will stop all process threads)
Load the inferior state from a core dump
get a core dump of a running process
gcore $PID 
open it in gdb
gdb /usr/bin/python core.$PID
Print a traceback
(gdb) py‐bt 
Traceback (most recent call first): 
File "/usr/lib/python2.7/logging/__init__.py", line 872, in emit
  stream.write(ufs % msg) 
File "/usr/lib/python2.7/logging/__init__.py", line 759, in handle
  self.emit(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 1336, in callHand
  hdlr.handle(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 1296, in handle
  self.callHandlers(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 1286, in _log
  self.handle(record) 
File "/usr/lib/python2.7/logging/__init__.py", line 1155, in debug
  self._log(DEBUG, msg, args, **kwargs) 
File "/usr/lib/python2.7/logging/__init__.py", line 1440, in debug
  self.logger.debug(msg, *args, **kwargs) 
File "/opt/stack/nova/nova/compute/resource_tracker.py", line 639, 
  'pci_devices': pci_devices}) 
Print Python code
(gdb) py‐list 
 867 try: 
 868     if (isinstance(msg, unicode) and 
 869         getattr(stream, 'encoding', None)): 
 870         ufs = u'%sn' 
 871         try: 
>872             stream.write(ufs % msg) 
 873         except UnicodeEncodeError: 
 874             #Printing to terminals sometimes fails. For example,
 875             #with an encoding of 'cp1251', the above write will
 876             #work if written to a stream opened or wrapped by
 877             #the codecs module, but fail when writing to a
Print local variables
(gdb) py‐locals 
self = <ColorHandler(...)> 
stream = <file at remote 0x7fa76ebb61e0> 
fs = '%sn' 
ufs = u'%sn' 
Set a breakpoint in native code
gdb /usr/bin/python 
(gdb) break mkdir 
Breakpoint 1 at 0x417600 
(gdb) condition 1 $_regex((char*) $rdi, ".*/instances/.*") 
(gdb) commands 1 
Type commands for breakpoint(s) 1, one per line. 
End with a line saying just "end". 
>py‐bt 
>end 
end 
(gdb) run ‐m testtools.run discover ‐s nova/tests/unit 
Execute arbitrary Python code in the
process context
(gdb) call PyGILState_Ensure() 
$1 = 1 
(gdb) call PyRun_SimpleString("1 + 1") 
$2 = 0 
(gdb) call PyGILState_Release(1) 
Gotchas: virtual environments and custom
CPython builds
when attaching to a Python process started in a virtual
environment debugging symbols may suddenly not be
found anymore
gdb ‐p $2975 
Attaching to process 2975 
Reading symbols from .../venv/bin/python2... 
(no debugging symbols found)...done. 
it happens because gdb looks for them in the wrong
place: if you omit the inferior binary path, gdb tries to
derive it from  /proc/$PID/exe  symlink and then load
debugging symbols stored in the predefined path ‒ e.g.
 /usr/lib/debug/$PATH . For a virtual environment it's not
 /usr/lib/debug/usr/bin/python2 , thus, loading fails
Gotchas: virtual environments and custom
CPython builds
the solution is to always pass the inferior binary path
explicitly when attaching to a process
gdb /usr/bin/python2.7 ‐p $PID  
alternatively, modern CPython builds (at least on Debian
Testing or Ubuntu Xenial) have an associated  build‐id 
value, that is used to uniquely identify stripped
debugging symbols
objdump ‐s ‐j .note.gnu.build‐id /usr/bin/python2.7 
Reading symbols from /usr/lib/debug/.build‐id/8d/04a3ae38521cb7c7928e
Gotchas: virtual environments and custom
CPython builds
py‒ commands may be undefined for a very similar
reason
(gdb) py‐bt 
Undefined command: "py‐bt".  Try "help". 
gdb autoloads debugging scripts from  $PATH‐gdb.py 
(gdb) info auto‐load 
gdb‐scripts:  No auto‐load scripts. 
libthread‐db:  No auto‐loaded libthread‐db. 
local‐gdbinit:  Local .gdbinit file was not found. 
python‐scripts: 
Loaded  Script 
Yes     /usr/share/gdb/auto‐load/usr/bin/python2.7‐gdb.py 
Gotchas: virtual environments and custom
CPython builds
you can always load the scripts manually
it's also useful for testing of the new versions of gdb
scripts shipped with CPython
(gdb) source /usr/share/gdb/auto‐load/usr/bin/python2.7‐gdb.py 
Gotchas: PTRACE̲ATTACH not permitted
Controlled by  /proc/sys/kernel/yama/ptrace_scope , possible
values are
 0  ‒ a process can  PTRACE_ATTACH  to any other 
process running under the same uid
 1  ‒ only descendants can be traced (default on Ubuntu)
 2  ‒ admin‒only attach, or through children calling
 PTRACE_TRACEME 
 3  ‒ no processes may use ptrace with  PTRACE_ATTACH  nor
via  PTRACE_TRACEME 
Gotchas: python‒dbg
a separate build of CPython (with  ‐‐with‐pydebug  passed
to  ./configure ) with many run‒time checks enabled,
thus, much slower
not required for using gdb
$ time python ‐c "print(sum(range(1, 1000000)))" 
499999500000 
real    0m0.096s 
user    0m0.057s 
sys 0m0.030s 
$ time python‐dbg ‐c "print(sum(range(1, 1000000)))" 
499999500000 
[18318 refs] 
real    0m0.237s 
user    0m0.197s 
sys 0m0.016s 
Gotchas: compiler build flags
some Linux distros build CPython with  ‐g0  or  ‐g1  flags
passed to gcc: the former produces a binary without
debugging information at all, and the latter does not
allow gdb to get information about local variables at
runtime
the solution is to rebuild CPython with  ‐g  or  ‐g2  ( 2  is
the default value when  ‐g  is passed)
Gotchas: optimized out frames
depending on the optimization level used in gcc when
building CPython or the concrete compiler version used,
it's possible that information on local variables or
function arguments will be lost at runtime (e.g. with
aggressive optimizations enabled by  ‐O3 )
(gdb) py‐bt 
Traceback (most recent call first): 
  File "test2.py", line 9, in g 
    time.sleep(1000) 
  File "test2.py", line 5, in f 
    g() 
  (frame information optimized out) 
Gotchas: PyPy, Jython, etc
the described debugging technique is only feasible for
the CPython interpreter as is, as the gdb extension is
specifically written to introspect the state of CPython
internals (e.g. PyEval̲EvalFrameEx calls)
for PyPy there is an open issue on Bitbucket, where it
was proposed to provide integration with gdb, but looks
like the attached patches have not been merged yet and
the person, who wrote those, lost interest in this
for Jython you could probably use standard tools for
debugging of JVM applications, e.g. VisualVM
Links
gdb Debugging Full Example:
http://brendangregg.com/blog/2016‒08‒09/gdb‒
example‒ncurses.html
Low‒level Python debugging with gdb:
http://grapsus.net/blog/post/Low‒level‒Python‒
debugging‒with‒GDB
pydevd: http://pydev.blogspot.com/2014/09/attaching‒
debugger‒to‒running‒process.html
pyringe: https://github.com/google/pyringe
Conclusion
gdb is a powerful tool, that allows one to debug complex
problems with crashing or hanging CPython processes,
as well as Python code, that does calls to native libraries
on modern Linux distros debugging CPython processes
with gdb must be as simple as installing of debugging
symbols for the concrete interpreter build, although
there are a few known gotchas, especially when virtual
environments are used
Questions?
Your feedback is very appreciated!
twitter: @rpodoliaka 
email: roman.podoliaka@gmail.com 
blog: http://podoliaka.org 
slides: http://podoliaka.org/talks/

More Related Content

What's hot

Beginning with Composer - Dependency manager in php
Beginning with Composer  - Dependency manager in php Beginning with Composer  - Dependency manager in php
Beginning with Composer - Dependency manager in php
Yogesh Salvi
 
Build Great Networked APIs with Swift, OpenAPI, and gRPC
Build Great Networked APIs with Swift, OpenAPI, and gRPCBuild Great Networked APIs with Swift, OpenAPI, and gRPC
Build Great Networked APIs with Swift, OpenAPI, and gRPC
Tim Burks
 
Enforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationEnforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code Generation
Tim Burks
 
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Aniruddha Chakrabarti
 
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
 [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
Nexus FrontierTech
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
NVISIA
 
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOUHOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
Lucas Jellema
 
Build your next REST API with gRPC
Build your next REST API with gRPCBuild your next REST API with gRPC
Build your next REST API with gRPC
Tim Burks
 
gRPC with java
gRPC with javagRPC with java
gRPC with java
Knoldus Inc.
 
Golang Channels use cases
Golang Channels use casesGolang Channels use cases
Golang Channels use cases
Erhan Yakut
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
Amal Mohan N
 
#JavaOne What's in an object?
#JavaOne What's in an object?#JavaOne What's in an object?
#JavaOne What's in an object?
Charlie Gracie
 
Hack language
Hack languageHack language
Hack language
Ravindra Bhadane
 
Implementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPCImplementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPC
Tim Burks
 
Python Online From EasyLearning Guru
Python Online From EasyLearning GuruPython Online From EasyLearning Guru
Python Online From EasyLearning Guru
KCC Software Ltd. & Easylearning.guru
 
Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language
Ganesh Samarthyam
 
Evolution or stagnation programming languages
Evolution or stagnation programming languagesEvolution or stagnation programming languages
Evolution or stagnation programming languages
Daniele Esposti
 
Go Lang
Go LangGo Lang
Web programming UNIT II by Bhavsingh Maloth
Web programming UNIT II by Bhavsingh MalothWeb programming UNIT II by Bhavsingh Maloth
Web programming UNIT II by Bhavsingh Maloth
Bhavsingh Maloth
 
Why Python?
Why Python?Why Python?
Why Python?
Adam Pah
 

What's hot (20)

Beginning with Composer - Dependency manager in php
Beginning with Composer  - Dependency manager in php Beginning with Composer  - Dependency manager in php
Beginning with Composer - Dependency manager in php
 
Build Great Networked APIs with Swift, OpenAPI, and gRPC
Build Great Networked APIs with Swift, OpenAPI, and gRPCBuild Great Networked APIs with Swift, OpenAPI, and gRPC
Build Great Networked APIs with Swift, OpenAPI, and gRPC
 
Enforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationEnforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code Generation
 
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
Mphasis Digital - Use Go (gloang) for system programming, distributed systems...
 
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
 [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno [INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
[INNOVATUBE] Tech Talk #3: Golang - Takaaki Mizuno
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
 
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOUHOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
HOW AND WHY GRAALVM IS QUICKLY BECOMING RELEVANT FOR YOU
 
Build your next REST API with gRPC
Build your next REST API with gRPCBuild your next REST API with gRPC
Build your next REST API with gRPC
 
gRPC with java
gRPC with javagRPC with java
gRPC with java
 
Golang Channels use cases
Golang Channels use casesGolang Channels use cases
Golang Channels use cases
 
Introduction to go lang
Introduction to go langIntroduction to go lang
Introduction to go lang
 
#JavaOne What's in an object?
#JavaOne What's in an object?#JavaOne What's in an object?
#JavaOne What's in an object?
 
Hack language
Hack languageHack language
Hack language
 
Implementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPCImplementing OpenAPI and GraphQL services with gRPC
Implementing OpenAPI and GraphQL services with gRPC
 
Python Online From EasyLearning Guru
Python Online From EasyLearning GuruPython Online From EasyLearning Guru
Python Online From EasyLearning Guru
 
Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language Lets Go - An introduction to Google's Go Programming Language
Lets Go - An introduction to Google's Go Programming Language
 
Evolution or stagnation programming languages
Evolution or stagnation programming languagesEvolution or stagnation programming languages
Evolution or stagnation programming languages
 
Go Lang
Go LangGo Lang
Go Lang
 
Web programming UNIT II by Bhavsingh Maloth
Web programming UNIT II by Bhavsingh MalothWeb programming UNIT II by Bhavsingh Maloth
Web programming UNIT II by Bhavsingh Maloth
 
Why Python?
Why Python?Why Python?
Why Python?
 

Similar to Slides

Introduction To Python
Introduction To PythonIntroduction To Python
Introduction To Python
Biswajeet Dasmajumdar
 
Research paper on python by Rj
Research paper on python by RjResearch paper on python by Rj
Research paper on python by Rj
Shree M.L.Kakadiya MCA mahila college, Amreli
 
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdfManaging Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Andrew Lamb
 
Debugging Python with gdb
Debugging Python with gdbDebugging Python with gdb
Debugging Python with gdb
Roman Podoliaka
 
Continuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon OttoContinuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon Otto
Peter Bittner
 
Some wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily useSome wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily use
arun.arwachin
 
Portable batch and streaming pipelines with Apache Beam (Big Data Application...
Portable batch and streaming pipelines with Apache Beam (Big Data Application...Portable batch and streaming pipelines with Apache Beam (Big Data Application...
Portable batch and streaming pipelines with Apache Beam (Big Data Application...
Malo Denielou
 
PyCon2022 - Building Python Extensions
PyCon2022 - Building Python ExtensionsPyCon2022 - Building Python Extensions
PyCon2022 - Building Python Extensions
Henry Schreiner
 
Python 101 for the .NET Developer
Python 101 for the .NET DeveloperPython 101 for the .NET Developer
Python 101 for the .NET Developer
Sarah Dutkiewicz
 
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Mickael Istria
 
Pythonic doesn't mean slow!
Pythonic doesn't mean slow!Pythonic doesn't mean slow!
Pythonic doesn't mean slow!
Ronan Lamy
 
2018 20 best id es for python programming
2018 20 best id es for python programming2018 20 best id es for python programming
2018 20 best id es for python programming
SyedBrothersRealEsta
 
20 best ide's for python programming in 2018
 20 best ide's for python programming in 2018 20 best ide's for python programming in 2018
20 best ide's for python programming in 2018
Qamar Abbas
 
Python Programming and ApplicationsUnit-1.docx
Python Programming and ApplicationsUnit-1.docxPython Programming and ApplicationsUnit-1.docx
Python Programming and ApplicationsUnit-1.docx
Manohar k
 
Python_final_print_vison_academy_9822506209.pdf
Python_final_print_vison_academy_9822506209.pdfPython_final_print_vison_academy_9822506209.pdf
Python_final_print_vison_academy_9822506209.pdf
VisionAcademyProfSac
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
wesley chun
 
Pyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdfPyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdf
Mattupallipardhu
 
Python | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python TutorialPython | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python Tutorial
QA TrainingHub
 

Similar to Slides (20)

Introduction To Python
Introduction To PythonIntroduction To Python
Introduction To Python
 
Research paper on python by Rj
Research paper on python by RjResearch paper on python by Rj
Research paper on python by Rj
 
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdfManaging Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
Managing Software Dependencies and the Supply Chain_ MIT EM.S20.pdf
 
Debugging Python with gdb
Debugging Python with gdbDebugging Python with gdb
Debugging Python with gdb
 
Continuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon OttoContinuous Delivery for Python Developers – PyCon Otto
Continuous Delivery for Python Developers – PyCon Otto
 
Some wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily useSome wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily use
 
resume
resumeresume
resume
 
Portable batch and streaming pipelines with Apache Beam (Big Data Application...
Portable batch and streaming pipelines with Apache Beam (Big Data Application...Portable batch and streaming pipelines with Apache Beam (Big Data Application...
Portable batch and streaming pipelines with Apache Beam (Big Data Application...
 
PyCon2022 - Building Python Extensions
PyCon2022 - Building Python ExtensionsPyCon2022 - Building Python Extensions
PyCon2022 - Building Python Extensions
 
Python 101 for the .NET Developer
Python 101 for the .NET DeveloperPython 101 for the .NET Developer
Python 101 for the .NET Developer
 
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
Adopting Debug Adapter Protocol in Eclipse IDE: netcoredbg (.NET debugger) ca...
 
Pythonic doesn't mean slow!
Pythonic doesn't mean slow!Pythonic doesn't mean slow!
Pythonic doesn't mean slow!
 
2018 20 best id es for python programming
2018 20 best id es for python programming2018 20 best id es for python programming
2018 20 best id es for python programming
 
20 best ide's for python programming in 2018
 20 best ide's for python programming in 2018 20 best ide's for python programming in 2018
20 best ide's for python programming in 2018
 
Python Programming and ApplicationsUnit-1.docx
Python Programming and ApplicationsUnit-1.docxPython Programming and ApplicationsUnit-1.docx
Python Programming and ApplicationsUnit-1.docx
 
Saroj_Profile
Saroj_ProfileSaroj_Profile
Saroj_Profile
 
Python_final_print_vison_academy_9822506209.pdf
Python_final_print_vison_academy_9822506209.pdfPython_final_print_vison_academy_9822506209.pdf
Python_final_print_vison_academy_9822506209.pdf
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
 
Pyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdfPyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdf
 
Python | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python TutorialPython | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python Tutorial
 

Recently uploaded

Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
fxintegritypublishin
 
Cosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdfCosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdf
Kamal Acharya
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
Vijay Dialani, PhD
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
AhmedHussein950959
 
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
H.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdfH.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdf
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
MLILAB
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
Jayaprasanna4
 
HYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationHYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generation
Robbie Edward Sayers
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
BrazilAccount1
 
power quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptxpower quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptx
ViniHema
 
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&BDesign and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Sreedhar Chowdam
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
FluxPrime1
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Dr.Costas Sachpazis
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
zwunae
 
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
R&R Consult
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation & Control
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
Pratik Pawar
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
VENKATESHvenky89705
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
AafreenAbuthahir2
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
Neometrix_Engineering_Pvt_Ltd
 

Recently uploaded (20)

Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
 
Cosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdfCosmetic shop management system project report.pdf
Cosmetic shop management system project report.pdf
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
 
ASME IX(9) 2007 Full Version .pdf
ASME IX(9)  2007 Full Version       .pdfASME IX(9)  2007 Full Version       .pdf
ASME IX(9) 2007 Full Version .pdf
 
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
H.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdfH.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdf
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
 
HYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generationHYDROPOWER - Hydroelectric power generation
HYDROPOWER - Hydroelectric power generation
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
 
power quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptxpower quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptx
 
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&BDesign and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
 
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
 
Water Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdfWater Industry Process Automation and Control Monthly - May 2024.pdf
Water Industry Process Automation and Control Monthly - May 2024.pdf
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
 

Slides