07-17-2011, 05:50 PM | #1 |
Developer
Posts: 155
Karma: 280
Join Date: Nov 2010
Device: Kindle 3 (Keyboard) 3G / iPad 9 WiFi / Google Pixel 6a (Android)
|
HowTo: Debug calibre with Eclipse/PyDev
Hi,
using a debugger with calibre is rather difficult, but I've managed to get the PyDev debugger working via remote debugging. Here are the necessary steps: - Set up calibre development for your platform (I'm using Windows 7 64bit): http://manual.calibre-ebook.com/develop.html - Set up PyDev remote debugging: http://pydev.org/manual_adv_remote_debugger.html. For step 3 "Make sure pydevd.py is in your pythonpath" I've copied the required files to the src directory of calibre. - Locate the source code to debug and add the line Code:
import pydevd;pydevd.settrace() - Start calibre with "calibre-debug -g" - When the added line is reached, the debugger will stop. You can continue from there, set break points etc. Please note that it doesn't work to add the debug line at the calibre startup code and single step from there through the whole application, as the calibre startup is rather tricky and different threads are running. So it's best to just add the line (even at multiple locations) where you would normally set your breakpoint. Happy debugging, Steffen |
07-18-2011, 04:31 AM | #2 |
Enthusiast
Posts: 32
Karma: 10
Join Date: Jul 2011
Device: none
|
i've done all the above, i need to know if i can trace the classes that calibre call whenever an action is made for exemple i want to know when i change the language and make an apply of the apply click what functions calibre call, how can i do that with pyDev ?
|
Advert | |
|
12-17-2011, 09:01 AM | #3 |
Member
Posts: 21
Karma: 10
Join Date: Dec 2011
Device: Kindle
|
Do you have any hints for setting up calibre as a python project for PyDev in Eclipse?
|
12-17-2011, 04:29 PM | #4 |
Member
Posts: 21
Karma: 10
Join Date: Dec 2011
Device: Kindle
|
I was able to set up two projects within the overall calibre directory, one based on calibre/setup, and one based on calibre/src. Each contains multiple packages.
Does setup have dependencies at the top level? Does src have dependencies on setup? |
12-18-2011, 06:00 AM | #5 |
Developer
Posts: 155
Karma: 280
Join Date: Nov 2010
Device: Kindle 3 (Keyboard) 3G / iPad 9 WiFi / Google Pixel 6a (Android)
|
Unless you want to change/improve the calibre installer, you should need only one calibre project with pythonpath set to calibre/src. At least this is what I use
Ciao, Steffen |
Advert | |
|
12-18-2011, 09:47 PM | #6 |
Member
Posts: 21
Karma: 10
Join Date: Dec 2011
Device: Kindle
|
Thanks Steffen.
I've removed the setup project. I'm running against 2.7 on OS X, installed from Mac Ports. I have included the org.python.pydev_2.3.0..../PySrc and the org.python.pydev.debug_2.3.0...../pysrc folders in PYTHONPATH within the Eclipse setup. Eclipse is complaining about sys.extensions_location Undefined variable from import: extensions_location Any ideas? Peter |
12-18-2011, 11:18 PM | #7 |
Member
Posts: 21
Karma: 10
Join Date: Dec 2011
Device: Kindle
|
I think I might have the wrong approach completely. Given that any changes I might make to the checked-out code are actually run from within the calibre.app (on OS X), making use of the environment variable CALIBRE_DEVELOP_FROM, it occurs to me that I cannot get a clean PyDev environment with just the checked-out code, but I need to set up a project based on the installed calibre.app, which will reference the checkout via CALIBRE_DEVELOP_FROM.
Is this right? If so, how do I define the Eclipse PyDev project? Peter |
12-19-2011, 04:57 AM | #8 |
Calibre Plugins Developer
Posts: 4,637
Karma: 2162064
Join Date: Oct 2010
Location: Australia
Device: Kindle Oasis
|
@pbw - it has been a long while since I setup my Eclipse environment, but from what I recall all I did was
- do a bazaar retrieval of the code into a directory, - create a new empty Eclipse project in a different folder, - right-click in the package explorer and add a new folder, click Advanced, and use the "Link to alternate location" to point to the "src" subfolder of the calibre code. - the PYTHONPATH is set to the src/calibre folder. No external libraries etc. - set your various other PyDev related defaults. Browse for the setting up Aptana thread in this forum for details of what they are That is all there is to it from memory. You don't "run" calibre from eclipse - you just use it for editing/navigating the code. You set your CALIBRE_DEVELOP_FROM to point to the same src folder, and just run calibre as per normal, or calibre-debug -g if you want console output. In my case for writing plugins I have a second folder I keep within src that contains them all, and as part of each plugin subfolder I keep a batch file that launches calibre after installing that plugin. So I can just double click on the batch file in the package explorer of Eclipse to see the new plugin in action. |
12-19-2011, 05:42 AM | #9 |
Grand Sorcerer
Posts: 11,742
Karma: 6997045
Join Date: Jan 2010
Location: Notts, England
Device: Kobo Libra 2
|
I use Eclipse Helios and PyDev. I have 4 different calibre projects such as calibre_base (trunk), calibre_dev (my main dev project), a play project, and a project for get_books work. My eclipse workspace is the folder containing these projects. Each project was populated using bzr branch, which I then import into eclipse. I use bzr pull to get trunk changes, then merge these changes into my other projects.
My project settings are: - python 2.7 - pydev PYTHONPATH/source folders: calibre_project_name/src, for example calibre_base/src I installed AnyEdit to deal with tab/space conversions (calibre uses spaces, not tabs), removing space at the end of lines, and to convert CR LF to just LF. I changed (at least) the following Pydev workspace setting: Code analysis/undefined: _,tr,I,P,dynamic_property,lopen, icu_title, icu_lower, icu_upper,ngettext. I installed Qt and lxml to stop pydev complaining about these being undefined. I am sure I have tweaked other settings, but I don't remember what they are. Finally, I have a set of script files to choose the calibre code I want to run (sets CALIBRE_DEVELOP_FROM) and another set to choose the library I want to use then run calibre-debug -g. |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Development [HOWTO] Enable USD Debugging, and gain root with Debug password | jcase | enTourage Archive | 69 | 04-30-2011 11:43 PM |
HowTo: Use git under Windows to track calibre development | siebert | Development | 0 | 02-26-2011 05:27 PM |
Calibre debug file | meme | Calibre | 7 | 02-01-2011 04:45 PM |
Calibre: wie aktiviert man das Debug Verzeichnis? | nalor78 | Software | 1 | 08-10-2010 09:38 AM |
calibre-debug --update-module | iain_benson | Calibre | 4 | 10-02-2009 07:00 PM |