At least from my personal perspective, the core difference here is that I use the same tool for all of those different things. Any mature language these days has a solid debugger available, but not jumping between different tools means you get more proficient at the one tool you do use.
any language where the necessary information is not thrown away when producing a binary. so that means by default languages where the source is distributed have an advantage. but that's still a lot of languages.
Isn't this a basic feature that all languages have?